背景

作为一名java后端开发工程师,免不了要使用数据库,也免不了会用到mybatis框架,使用mybatis框架又免不了使用选择一个用于处理mybatis分页功能的插件,本文主要介绍两个用于处理分页的插件。

插件1 Mybatis-plus

依赖

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.2</version>
</dependency>
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>3.0.2</version>

#注意里面的mybatis-spring要一样,不然版本会不兼容

mapper

public interface JijingMapper extends BaseMapper<Jijing> {}

分页代码
//参数一是当前页,参数二是每页个数

IPage<User> userPage = new Page<>(2, 2);
userPage = userMapper.selectPage(userPage, null);

配置类

@Configuration
public class MybatisConfig {@Beanpublic PaginationInterceptor paginationInterceptor() {PaginationInterceptor page = new PaginationInterceptor();return page;}@Beanpublic ISqlInjector sqlInjector() {return new DefaultSqlInjector();}}

实体类

@TableName("uwb_device_type")
public class DeviceTypeEntity extends AbstractBase {@TableLogic(value = "1",delval = "0")  //走 Update value = "" 默认的原值 delval = "" 删除后的值protected Byte deletedFlg; #不能为private@TableField(fill = FieldFill.INSERT)@TableField(fill = FieldFill.INSERT_UPDATE)@TableField(exist=false)}

配置文件

mybatis-plus.mapperLocations = classpath*:mapper/*.xml
mybatis-plus.type-aliases-package = com.adong.adongauthority.mvc.model
mybatis-plus.global-config.db-config.id-type = AUTO
mybatis-plus.global-config.db-config.db-type = MYSQL
mybatis-plus.global-config.db-config.field-strategy = NOT_NULL
mybatis-plus.global-config.db-config.table-underline = true
mybatis-plus.global-config.db-config.logic-delete-value = 0
mybatis-plus.global-config.db-config.logic-not-delete-value = 1
mybatis-plus.global-config.sql-parser-cache = true
mybatis-plus.configuration.map-underscore-to-camel-case = true
mybatis-plus.configuration.cache-enabled = false
mybatis-plus.configuration.jdbc-type-for-null = NULL
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

启动类

@MapperScan("com.adong.adongauthority.dao")

自动补充插入或更新时的值

@Component
public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {this.setFieldValByName("createBy", CookieUtil.getLoginUser(),metaObject);this.setFieldValByName("createTime", new Date(),metaObject);this.setFieldValByName("updateBy", CookieUtil.getLoginUser(),metaObject);this.setFieldValByName("updateTime", new Date(),metaObject);this.setFieldValByName("version", Long.valueOf(1),metaObject);this.setFieldValByName("appSecret", UUID.randomUUID().toString().replaceAll("-",""),metaObject);}@Overridepublic void updateFill(MetaObject metaObject) {this.setFieldValByName("updateBy", CookieUtil.getLoginUser(),metaObject);this.setFieldValByName("updateTime", new Date(),metaObject);this.setFieldValByName("version", this.getFieldValByName("version",metaObject),metaObject);}
}

插件2 pagehelper

依赖

<dependency>    <groupId>com.github.pagehelper</groupId>    <artifactId>pagehelper</artifactId>    <version>5.1.2</version></dependency>

使用

//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(queryDTO.getPage(), queryDTO.getListRows(),"create_time desc");
//紧跟着的第一个select方法会被分页
List<DeviceTypeEntity> list = deviceTypeDao.queryPageByEntity(queryDTO);
PageInfo page = new PageInfo(list);
return ResultVO.ok(page);
Example example = new Example(Person.class);
Example.Criteria criteria = example.createCriteria();
criteria.andIn("personCode", personCodes).andIsNotNull("tagId");
List<Person> personList = personDao.selectByExample(example);

配置

package com.paic.ocss.gateway.dao.config;import com.baomidou.mybatisplus.entity.GlobalConfiguration;
import com.github.pagehelper.PageHelper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;import java.util.Properties;@Configuration
@MapperScan("com.paic.ocss.gateway.dao.mapper*")
@Import(value = { com.paic.ocss.monitor.cat.mybatis.SpringCloudCatMybatisConfig.class })
public class MybatisConfig {@Beanpublic GlobalConfiguration globalConfiguration() {GlobalConfiguration global = new GlobalConfiguration();global.setDbType("mysql");return global;}/*** 配置mybatis的分页插件pageHelper* @return*/@Beanpublic PageHelper pageHelper(){PageHelper pageHelper = new PageHelper();Properties properties = new Properties();properties.setProperty("offsetAsPageNum","true");properties.setProperty("rowBoundsWithCount","true");properties.setProperty("reasonable","true");//配置mysql数据库的方言properties.setProperty("dialect","mysql");pageHelper.setProperties(properties);return pageHelper;}}

Mybatis分页插件介绍相关推荐

  1. MyBatis分页插件PageHelper使用练习

    转载自:http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown 1.环境准备: 分页插件p ...

  2. MyBatis学习总结(17)——Mybatis分页插件PageHelper

    2019独角兽企业重金招聘Python工程师标准>>> 如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊 ...

  3. Mybatis:Mybatis分页插件

    文章目录 1. Mybatis分页插件 1.1 分页插件介绍 1.2 分页插件的使用 1.3 分页插件的参数获取 1.4 分页插件知识小结 分页助手相关 API 1. Mybatis分页插件 1.1 ...

  4. 2. mybatis分页插件使用

    1.概述 在做系统的过程中,分页查询是我们经常遇到的一个场景,我们可以借助mybatis分页插件方便的实现分页功能,本文分享怎样使用mybatis分页插件. 2.mybatis分页插件使用 mybat ...

  5. springboot整合mybatis分页插件

    1.springboot版本为2.0.1,数据库为mysql,引入pagehelper的pom依赖 <!--mybatis分页插件--> <dependency><gro ...

  6. 解决使用mybatis分页插件PageHelper的一个报错问题

    解决使用mybatis分页插件PageHelper的一个报错问题 参考文章: (1)解决使用mybatis分页插件PageHelper的一个报错问题 (2)https://www.cnblogs.co ...

  7. (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示

    http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...

  8. 使用abel533大神的mybatis分页插件总结

    今天使用了abel533大神的mybatis分页插件,遇到了写问题,特意在这里做个总结,方便以后查找. 首先该测试是在本人的ssm基础框架上实现的,有兴趣的可以先看看本人的博客置顶帖.高手就略过吧. ...

  9. Mybatis分页插件MybatisHelper的使用

    Mybatis分页插件MybatisHelper的使用 MybatisHelper是Mybatis的一个数据分页插件,是国内的一个牛人""刘增辉""所写,功能强 ...

最新文章

  1. 感恩有你,链客一周年!
  2. unity 天空盒_使用Substance in Unity搭建Unity和SP的live link实时互通环境
  3. 机器学习规则 (Rules of Machine Learning): 关于机器学习工程的最佳实践
  4. python教授_Python为何如此优秀?斯坦福教授告诉你!
  5. 【转】单元测试基础知识
  6. CRI 与 ShimV2:一种 Kubernetes 集成容器运行时的新思路
  7. Kafka AKHQ 安装部署
  8. bootstrap-datetimepicker.js与IE8的兼容问题
  9. 【136】Cydia相关插件及配置
  10. android sim卡状态改变广播,android监听SIM状态
  11. 是时候展示真正的云存储黑科技了!
  12. python中矩阵怎么表示_python中的列矩阵表示
  13. 中国移动SP短信网关接入平台
  14. 大白菜装机教程win10_详解戴尔电脑一键重装系统win10教程
  15. 电商类目表创建类目树
  16. 短文:U盘物理写保护原理
  17. linux文件目录详解
  18. godot 顶级游戏引擎
  19. 通过docker部署zigbee2mqtt后出现web界面无法访问
  20. 一个轻量级内存池的实现与细节

热门文章

  1. 推荐一些成长的公众号
  2. linux 压缩文件夹以及其内部的文件
  3. CKEDitor支持WORD格式的缩进问题
  4. Radeon Settings 和驱动程序版本不匹配
  5. HAProxy讲解及HAProxy 负载 mysql 集群
  6. 老程序员有技术为啥不单干?非要在公司呆这!
  7. 数据库原理-模式分解算法详解(3NF BCNF)
  8. 宏指令和数据的输入输出
  9. python学习笔记-结构化
  10. 洛谷 P1137 旅行计划 题解