JPA

1、JPA的查询方法:

1.1、默认封装查询(新建接口类,继承JpaRepository)

1.1.1、默认查询,不能修改查询条件和查询结果:通过JPA封装的接口方法进行查询,新建的接口类无续做任何编码处理,后续便可调用封装方法实现查询。

1.1.2、简单查询,可以满足查询条件但不能修改查询结果:根据JPA接口方法全名规则,在新建的接口类中添加对应接口方法,后续便可通过此方法直接实现查询。

1.1.3、自定义接口方法名,通过@QUERY注解,自定义自己的查询语句(JPQL,HQL,nativeQuery=true时为纯SQL)

1.1.3.1、修改查询条件:

1.1.3.1.1、通过占位符(:parameterName或?(?后面可以跟数字,表示第几个参数))如:select * from table where field1=:param1或select * from table where field1=?1

1.1.3.1.2、动态设置查询条件:

1.1.3.1.2.1、新建的接口类除了上面继承的接口JpaRepository外,还需要继承JpaSpecificationExecutor接口

1.1.3.1.2.2、新建查询条件组装类,实现接口Specification,并重写toPredicate方法

1.1.3.1.2.3、自定义查询条件实体类

1.1.3.1.2.4、以查询条件实体类为基础通过查询条件组装类中toPredicate的实现方法,重新组装查询条件

1.1.3.1.2.5、通过查询接口类的方法及以条件组装类的实例作为参数进行查询,如:

      Specification<TCaseInfo> specification=new SpecificationImpl<TCaseInfo>(condition);
      caseInfoDao.findAll(specification);

1.1.3.2、修改查询结果:

1.1.3.2.1、新建查询结果接口类(设置属性的GET方法即可):查询结果的字段别名必须对应接口的GET方法,后续使用同实体类完全一样。

1.1.3.2.2、新建查询结果实体类(设置所需要的所有属性、对应GET/SET方法及构造方法):使用JPQL直接完成如:select new com.module.ModuleName(property1,property2) from entity

1.1.3.2.3、以List<Object[]>进行返回查询结果实体类,对返回结果进行统一转换成目标结果实体

 

posted on 2019-04-07 18:27  后起江湖  阅读(995)  评论(0)    收藏  举报