JPA实现分页以及排序,对jpa不熟练的朋友们学习一下吧

首先JPA这个东西吧,我的评价是不太主流,轻量级,但是mysql跟他比,你说mysql很重也不至于。推荐在搭项目框架的时候,除非是一些特别小型的项目,真的不太推荐用JPA,由于不主流,导致很多同事对他封装的一个方法不熟练,会遇到很多坑。优先还是考虑mybaties吧,搭建其实也很容易的,主要是省事,不至于自己写个sql还要百度半天。 接下来我给大家讲下如何用JPA做分页以及排序吧,讲完以后再给大家补充点别的。 其实jpa已经给大家封装好了分页以及排序的功能,花点时间看源码是完全可以找到的。

分页离不开pageable,pageNum和pageSize都是前台传过来的,不多说。顺便提一下,

包不要引错了: import org.springframework.data.domain.Pageable;

Pageable pageable = new PageRequest(pageNum, pageSize);
接下来dao接口继承一下JpaRepository

 service层调用findAll(pageable)方法 

Page findAll(Pageable pageable);

好了,jpa的优势体现了,这样你的分页功能已经完全写好了,不需要自己写sql。

那么上面我们实现了分页,如何进行排序呢,接着往下看

Pageable pageable = new PageRequest(pageNum, pageSize, Sort.Direction.DESC, "id");

看出区别了吗,Sort类,人家也帮你写好了,倒序或是升序自己选,然后依据的字段,自己写上,这里是order by id的。加进PageRequest中,OK。什么都不用你干,排序也排好了。 是不是很简单。 顺便给大家提一下如何用JPA自己写sql

@Query(value = "select count(1) from user where user.sex = :sex and user.name like %:name%",nativeQuery = true)

Integer selectCounts(@Param("sex") String sex, @Param("name") String name);

使用@Query注解,将sql写在其中,nativeQuery = true就是支持本地查询 sql语句是我自己编的,大家不要在意逻辑,主要注意一下语法,传参是写成:xxx 不要写成#{xxx},包括like的用法。

额外再提一句,JPA是不支持limit的,那是mysql的语法。

转载于:https://my.oschina.net/u/3869202/blog/1826783

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值