1.1 HQL查询
1.1.1 普通查询
@Query(“ select t.name,t.age from ArchWorkPlan t where t.id >?1 ”)
List<ArchWorkPlan> queryData(int id)
1.1.2 模糊查询
@Query(“ select t from ArchWorkPlan t where t.name like %:name% ”)
List<ArchWorkPlan> queryData(@Param(“name”)String name)
--HQL查询对查询出的出参个数没有要求
1.2 SQL查询
1.2.1 普通查询
@Query(value=“ select * from arch_work_plan t where t.id>?1 “,nativeQuery=true)
List<ArchWorkPlan> queryData(int id)
1.2.2 模糊查询
@Query(value=“select * from arch_work_plan t where t.name like %?1% “,nativeQuery=true)
List<ArchWorkPlan> queryData(String name)
--模糊查询中的%不需要加单引号,加上会报错
--SQL查询必须要查询出表中的所有字段,否则报“列名无效”
1.3 命名参数和索引参数
1.3.1 命名参数
@Query(“ select t from ArchWorkPlan t where t.id >:id ”)
List<ArchWorkPlan> queryData(@Param(“id”)int id)
--使用@param注解需要导包,导org.springframework.data.repository.query.Param
1.3.2 索引参数
@Query(“ select t from ArchWorkPlan t where t.id >?1 and t.name=?2”)
List<ArchWorkPlan> queryData(int id,String name )
--不管是命名参数还是索引参数,在解析参数的时候都会给参数自动加上单引号,所以在传递动态表名或视图名时不要采用@Query方法,建议使用实体管理器的方式
1.4 分页查询
1.4.1 dao层
@Query(value=" select * from arch_work_plan where name=:name order by ?#{#pageable} ",countQuery=" select count(*) from arch_work_plan where name=:name ",nativeQuery=true)
Page<ArchWorkPlan> queryPage(@Param("name") String name , Pageable pageable);
1.4.2 service层
Pageable pageable = new PageRequest(pageNumber, pageSize,Sort.Direction.ASC,"id"); //按照id字段降序排列
1.5 多表查询
1.5.1 采用遍历Map形式取值
dao层:
@Query(“ select t1.name,t2.age from a t1,b t2 where t1.sys_id =t2.sys_id ”)
List<Object> queryData()
service层:
List<Object> output = testDao.queryData();
List out = new ArrayList();
for (int i=0;i<output.size();i++) {
Object[] rowArray = (Object[]) output.get(i);
Map<String, Object> mapArr = new HashMap<String, Object>();
mapArr.put("name", rowArray[0]);
mapArr.put("age", rowArray[1]);
out.add(mapArr);
}