`
y806839048
  • 浏览: 1140399 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

spring-data-jpa需要特别弥补的地方

阅读更多

使用spring-data-jpa需要特别弥补的地方,这点mapper处理比较好

 

//弥补jpa单实体的不足用不同的工厂类操作复杂sql,mapper这点比较好在处理了单实体查询直接不用daoimpl下,即使用

xml进行复杂查询也不需要daoimpl

 

 

jpa 复杂操作弥补:

 

public class TbPowerGroupBeanDaoImpl implements ITbPowerGroupBeanDao {

 

@Autowired

public ESteelSqlSessionTemplate sqlSessionTemplate;

 

@Override

public List<Map<String,Object>> getBigPowerMenu(Map<String, Object> param) {

// TODO Auto-generated method stub

return sqlSessionTemplate.selectList("account.getBigPowerMenu", param);

}

}

 

 

public class UserBListDaoImpl implements UserBListDaoHelper{

 

@PersistenceContext

private EntityManager em;

 

@Override

public List<CusFirmBean> findCustomerExceptOne(Map<String, Object> paraMap) {

StringBuffer sb = new StringBuffer();

sb.append(" select distinct t.CUSTOMER_ID,t.CUSTOMER_KEY,t.CUSTOMER_NAME ");

sb.append(" from tb_user_blist t1 left join tb_cus_firm t on(t1.blist_customer_key=t.customer_key) ");

sb.append("  left join TB_USER_BLIST_LABEL t2 on(t1.blist_id=t2.blist_id) left join TB_USER_LABEL t3 on(t2.label_id=t3.label_id) ");

sb.append("  where t1.CUSTOMER_KEY=:CUSTOMER_KEY ");

if (!StringUtils.isNullObj(paraMap.get("CUSTOMER_NAME"))) {

sb.append(" and t.CUSTOMER_NAME like '%'||:CUSTOMER_NAME||'%'");

}

if (!StringUtils.isNullObj(paraMap.get("CUSTOMER_SEARCHKEY"))) {

sb.append(" and t.CUSTOMER_ID = :CUSTOMER_SEARCHKEY ");

}

if (!StringUtils.isNullObj(paraMap.get("label_name"))) {

sb.append(" and t3.label_name =:LABEL_NAME ");

}

if (!StringUtils.isNullObj(paraMap.get("selectedCustomerKey"))

&&paraMap.get("selectedCustomerKey").toString()!="[]") {

sb.append(" and t.CUSTOMER_KEY not in (:selectedCustomerKey)");

}

sb.append(" and t.CUS_TRADE_KIND = 'A'");

 

Query query = em.createNativeQuery(sb.toString());

query.setParameter("CUSTOMER_KEY", paraMap.get("CUSTOMER_KEY"));

if (!StringUtils.isNullObj(paraMap.get("CUSTOMER_NAME"))) {

query.setParameter("CUSTOMER_NAME", paraMap.get("CUSTOMER_NAME"));

}

if (!StringUtils.isNullObj(paraMap.get("CUSTOMER_SEARCHKEY"))) {

query.setParameter("CUSTOMER_SEARCHKEY", ((String) paraMap.get("CUSTOMER_SEARCHKEY")).toUpperCase());

}

if (!StringUtils.isNullObj(paraMap.get("label_name"))) {

query.setParameter("LABEL_NAME", paraMap.get("label_name"));

}

if (!StringUtils.isNullObj(paraMap.get("selectedCustomerKey"))

&&paraMap.get("selectedCustomerKey").toString()!="[]") {

query.setParameter("selectedCustomerKey", paraMap.get("selectedCustomerKey"));

}

List<Object[]> list = query.getResultList();

List<CusFirmBean> rstList = new ArrayList<CusFirmBean> ();

if(list!=null && list.size()>0) {

for(Object[] obj : list) {

CusFirmBean cus = new CusFirmBean ();

cus.setCustomerId(obj[0]!=null?obj[0].toString():"");

cus.setCustomerKey(NumberUtils.toLong(obj[1].toString()));

cus.setCustomerName(obj[2].toString());

rstList.add(cus);

}

}

return rstList;

}

}

 

 

 

jpa dao层直接操作(只限于单实体):

 

 

 

@Component("basLkpService")

public class BasLkpServiceImpl implements BasLkpService {

 

    @Autowired

    public BasAreaDao basAreaDao;

    

    @Autowired

    public BasLkpDao basLkpDao;

    

    @Override

    public List<BasAreaBean> getAllProvince() {

        

        return basAreaDao.findByAreaLevel("1");

    

    }

 @Override

public BasLkpBean getTbBasLkpByBusinessTypeLookupType(String businessType, String priceType) {

BasLkpBeanPK pk=new BasLkpBeanPK();

pk.setBusinessType(businessType);

pk.setLookupType(priceType);

return basLkpDao.findOne(pk);

}

}

 

 

分享到:
评论

相关推荐

    agile-jpa : spring-data-jpa扩展

    原生动态sql解析支持 依靠agile-sql(动态sql解析器)实现jpa中对sql语法段的动态解析,弥补其在动态sql解析方面的短板。面对复杂查询语句将不再是难点。内置slq分页与jpa分页 JPA风格的Do类对象操作形式分页与原生...

    rapidsh-SSH经典整合框架-包括权限管理-文件上传下载-用户管理-分页-lookup

    **分页查询**:在SSH框架中,可以使用各种分页插件,如PageHelper(针对MyBatis)或Spring Data JPA的Pageable接口,来实现数据的分页展示,提高用户体验。 综上所述,"rapidsh-SSH经典整合框架-包括权限管理-文件...

    开题报告springboot084基于springboot的论坛网站开题报告.docx

    系统基于Spring Boot开发,利用其内置的Spring MVC和Spring Data JPA,实现Web服务和数据访问。使用Thymeleaf作为前端模板引擎,提供动态网页渲染。采用MySQL数据库存储用户信息和帖子内容。 3.2 系统架构设计 ...

    基于SpringBoot+Mybatis实现SpringMVCWeb项目

    首先,我们需要在项目中引入Spring Boot的starter-web和starter-data-jpa依赖,以及Mybatis的起步依赖。Spring Boot会自动配置Web服务器(如Tomcat)和数据源,同时,Mybatis的配置可以通过Java配置类或XML配置文件...

    Java面试突击-V3.0.pdf

    它从Servlet到JSP,再到如今流行的Spring框架,包括Spring Boot、Spring MVC和Spring Data JPA等,详细讲解了Java在Web开发中的应用。通过学习这些内容,求职者能够掌握企业中实际使用的Java技术,提升自己的项目...

    基于springboot+Mybatis实现的餐厅点餐系统.zip

    它集成了大量常用的Java项目组件,如Tomcat服务器、Spring MVC、Spring Data JPA等,并默认配置了大部分功能,使得开发者可以快速构建微服务应用。在这个点餐系统中,SpringBoot负责整体的应用框架搭建,包括启动、...

    java 省市区三级联动

    你可以使用Spring Boot框架,结合MyBatis或者JPA来实现数据访问层,查询数据库并返回JSON格式的数据,如: ```java @GetMapping("/areas") public List&lt;Area&gt; getAreasByLevel(@RequestParam("level") int level, @...

Global site tag (gtag.js) - Google Analytics