添加依赖:
<!-- pagehelper分页模块 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
pagehelper配置:
#分页插件配置
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
returnPageInfo: check
代码实现:
PageHelper.startPage(pageNum, pageSize);
List<User> user= dpmMapper.queryUserList();
Page<User> dpmPage = PageUtils.page(user);
public static <E> Page<E> startPage(int pageNum, int pageSize, boolean count, Boolean reasonable, Boolean pageSizeZero) {
Page<E> page = new Page(pageNum, pageSize, count);
page.setReasonable(reasonable);
page.setPageSizeZero(pageSizeZero);
Page<E> oldPage = getLocalPage();
if (oldPage != null && oldPage.isOrderByOnly()) {
page.setOrderBy(oldPage.getOrderBy());
}
setLocalPage(page);
return page;
}
public T get() {
Thread t = Thread.currentThread();
ThreadLocalMap map = getMap(t);
if (map != null) {
ThreadLocalMap.Entry e = map.getEntry(this);
if (e != null) {
@SuppressWarnings("unchecked")
T result = (T)e.value;
return result;
}
}
return setInitialValue();
}
PageHelper将参数保存到page对象中,接着将page的副本存放入ThreadLoacl中,这样可以保证分页的时候,参数互不影响,接着利用了mybatis提供的拦截器,取得ThreadLocal的值,重新拼装分页SQL,完成分页
public class PageUtils<T> implements Serializable {
private static final long serialVersionUID = 7381468955316253104L;
public static <T> Page<T> page(List<T> list){
Page<T> page = new Page<T>(list);
return page;
}
}
public class Page<T> implements Serializable {
private static final long serialVersionUID = 6094186219831724663L;
private List<T> content = new ArrayList<>(); //对象记录结果集
private long totalPages = 0; //总页数
private long totalElements; //总记录数
private int number; //当前页
private int size; //每页显示记录数
private int numberOfElements; //每页显示实际记录数
public Page(List<T> temp) {
com.github.pagehelper.Page<T> result = (com.github.pagehelper.Page<T>) temp;
if(result != null && result.size() > 0){
this.content = result.getResult();
this.totalPages = result.getPages();
this.totalElements = result.getTotal();
this.number = result.getPageNum();
this.size = result.getPageSize();
this.numberOfElements = this.content.size();
}
}
public Page() {
super();
}
}
昨天想写一个抽奖类来玩玩。结果确没有思路,于是网上找了一个dome。参考学习之后发现最主要的是概率的计算。于是学习了一个。改方法主要是将所有奖品概率随机一个数,来决定中奖奖品。通过循环来判断随机数是否为中奖奖品,如果不是,去掉该奖品重新判断。/** *概率算法 * @access public * @param array $arr 数组,奖品的id和概率 ...
云游戏,是将传统Windows端的游戏,捕获游戏渲染出来的的音视频画面,通过流的形式传送到终端,终端上不再需要安装游戏,各类终端比如说电视、手机、PC、平板都可以运行。 优点是不需要关心游戏怎么去适配不同的软硬件平台、终端性能够不够等等这些问题。云游戏这个概念本身是非常好的,在2009年的时候,这个技术就已经出现了,美国有家叫Onlive 的公司第一个推出云游戏服务,但是他最终在商业上还是失败了,技术最后被索尼公司收购,并运用在PS Now上。云游戏的概念虽然非常好,但里面...
关注公众号,发现CV技术之美▊写在前面视觉语言预训练 (VLP) 提高了许多视觉语言任务的性能。但是,大多数现有的预训练模型仅在基于理解的任务或基于生成的任务中表现出色。此外,通过使用从...
1说明本文档制作基于版本linux-2.6.32,本文档的目的是让有一定的网络协议基础的人了解到网络数据包在协议栈中的传输流程,大致理解到从网卡收到数据包传输到应用层所经历的步骤,以及每个步骤所做的事情。 图片贴到最后。本文档阅读基础:C语言基础,C语言回调函数,UML建模基础,C++面向对象封装思想,TCP/IP协议或网络基础。2TCP协议本章摘自[...
用:JsonSerializer/JsonDeserializerpublic static class StudentJsonSerializer implements JsonSerializer {@Overridepublic JsonElement serialize(Student src, Type typeOfSrc, JsonSerializationContext contex...
【需求描述】:(1)超市业务按部门开展,目前该超市有采购部、销售部、运营部等,每个员工只能在一个部门;员工在入职时需要登记员工姓名、性别、出生日期、身份证、联系电话等信息。(2)超市销售的商品由超市运营部门决定,运营部门在确定销售的商品后,录入商品的详细信息,包含:商品编码、商品名称、条形码、产地、生产厂家、规格型号、商品进价、商品销售价、当前库存数量、库存下限数量等信息。其中,规格型号直接用文本表示;商品编码自行设计编码规则,系统自动生成商品编码。当前库存数量、库存下限数量均要大于等于0。商品营运部每
VS Code下载安装教程
目录相对强弱指数(RSI)移动平均线(MA)平滑异同移动平均线(MACD)随机相对强弱指数(StochRSI)布林线指标(BB)简介市场交易者通过对技术指标的分析来确定资产价格的未来走势。这些指标使得交易者可以更容易的确认当前市场环境的模式以及买卖信号。指标的类型也是形形色色,而每一种也都被日内交易者、短期交易者以及长线投资者所广泛使用。甚至一些专业的分析师和高级交易员创建了他们自己的指标。在本文中,我们将为大家简单介绍一些最常用的技术分析指标。1.相对强弱指数(RSI)相对强弱指数(
1 SIFT算法基本原理SITF算法,即尺度不变特征变换(Scale-invariant feature transform)算法,是由David G.Lowe于1999年提出,并在2004年加以完善。论文下载地址:https://www.cs.ubc.ca/~lowe/keypoints/www.cs.ubc.caLowe将尺度的概念引入到SIFT算法中,利用SIFT方法检测图像特征点的实质就...
共享单车现在已经成为了一个“现象级产品,目前最热的是出生在北京的ofo小黄车以及源于上海的摩拜小橙车,本文从物联网技术角度对这两者做一些比较和说明,试图解密共享单车ofo和摩拜背后的物联网技术。
Cadence 17.4 放置过孔总结:走线过孔、过孔复制和过孔阵列