关于jpa这个玩意,搞Java开发的基本都很喜欢,对数据操作实在是太方便了
只要设定对应的实体类,就可轻而易举的返回结果
当提供的方式不满足时,我们还可以自定义查询方式,使用@Query注解手写sql
为了提高效率,我们需要查询指定字段,很轻而易举的就能写出来
@Query(value="select 字段1,字段2 from 表名 where 字段=?1", nativeQuery=true)
List<实体类名> findByParentNum(String parentNum);
但当你运行的时候,你会发现,不管你的查询字段是什么,他都会把你整个表查出来
而且如果你的表中还有表关系关联的话,还会把子表全部查出来,是不是很坑
而如果只查询一个字段
@Query(value="select 字段1 from 表名 where 字段=?1", nativeQuery=true)
List<Integer> findByParentNum(String parentNum);
这样是没问题的,但我又不能一个一个查,那不累死
使用List<Map<String,Object>>
@Query(value="select 字段1,字段2 from 表名 where 字段=?1", nativeQuery=true)
List<Map<String, Object>> findByParentNum(String parentNum);
当然,也可以用hql
@Query(value="select o.字段1 as key1,o.字段2 as key2 from 实体名 o where o.字段=?1")
List<Map<String, Object>> findByParentNum(String parentNum);
这样我们看下结果

本文探讨了Java持久化API(JPA)中使用@Query注解进行自定义SQL查询时遇到的问题,特别是如何精确地返回指定字段的数据,避免不必要的全表扫描。文章对比了几种查询方式,并给出了有效解决方案。
4442

被折叠的 条评论
为什么被折叠?



