标签:SpringDataJPA sql 接口 查询 注解 Query
看着自己弟弟在成都聚全家之力盘一套房,
看着自己二哥,在成都也为车贷房贷奔波劳累,身心俱惫,
生活不易啊,这个社会环境下,就像从数据库拿数据一样,只拿我们想要的,或许会活的滋润很多吧。
最近的这个项目接触到了SpringDataJPA的使用,就结合一些资料做个学习总结
首先说说 SpringData 吧,大家都知道Spring善于整合,吸天下功力,一博己身越龙门,
现在的Spring就是那个越过龙门大展宏图的鲤
SpringData是Spring开发团队提供的一系列对持久层框架的整合的规范接口,
比如redis,mongodb,jpa等,mybatis(卖女求荣,hahahaha...)
今天我们的主角就是JPA,
SpringDataJPA:
核心:AOP (JPA只是一套标准的接口定义,Hibernate底层的实现)
玩法:持久层接口继承以下两个接口,可完成常规的单表简单复杂查询
JpaRepository<T,ID> : 该接口提供了基本的增删改查
JpaSpecificationExecutor<T> :用于做复杂的条件查询
查询(方法名自动生成 和 @Query注解 ):
1.方法名自动生成
在使用的时候,接口中定义了很多的查询API,可以直接使用(findAll(),findByID()...)
让人摸不透的是可以自定义方法名完成查询
语法规则如下:
2. @Query注解,然后就是手写sql了,手写sql又分为面向对象查询,和原生sql查询,取决于一个 @nativeQuery=“”的boolean值
@nativeQuery,默认为false,采用面向对象的方式进行查询,
手动设置为true后,就可以在value中键入原生sql语句了(推荐使用这种,可以在客户端检验正确性)
/** * 根据标签id 查询热门的回答列表 * @param labeiId * @param pageable 分页对象 * @return */ //开启手写sql 不使用面向对象的方式查询 @Query(nativeQuery = true, value = "SELECT * FROM tb_problem p WHERE p.`id`IN(SELECT problemid FROM tb_pl WHERE labelid = ?)ORDER BY reply DESC") Page<Problem> findHot(String labeiId,Pageable pageable);
修改和删除:如果想完成修改和删除的话,就得另外加上一个注解了 @Modifying
加了@modefying注解后,业务层必须加上事务注解才能进行修改和删除 @Transactional
若有错误,欢迎指出修正
标签:SpringDataJPA,sql,接口,查询,注解,Query 来源: https://www.cnblogs.com/msi-chen/p/10602146.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。