spring-boot | 整合通用Mabatis 分页插件PageHelper

Mybatis通用Mapper介绍

Mybatis 通用 Mapper
极其方便的使用 Mybatis 单表的增删改查,支持单表操作,不支持通用的多表联合查询
优点:
通用 Mapper 可以极大的方便开发人员。
为了让您更方便的了解通用 Mapper,下面贴一段代码来看实际效果。
通用Mapper
通用 Mapper 可以缓存,全部针对单表操作,每个实体类都需要继承通用 Mapper 接口来获得通用方法。

实际开发过程中,我们对数据库单表的操作情况有很多,有了通用mapper插件, 我们实现相对应的接口,整合到spring boot项目中,减少了xml文件的配置,使我们的开发更高效。

如何整合通用Mapper插件

引入依赖

    <!--mapper -->        <dependency>            <groupId>tk.mybatis</groupId>            <artifactId>mapper-spring-boot-starter</artifactId>            <version>1.1.0</version>        </dependency>        <!--pagehelper -->        <dependency>            <groupId>com.github.pagehelper</groupId>            <artifactId>pagehelper-spring-boot-starter</artifactId>            <version>1.1.0</version>        </dependency>        <!--阿里巴巴数据源 -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid</artifactId>            <version>1.0.25</version>        </dependency>

通过pom.xml文件引入通用Mapper依赖,同时引入了druid数据源和PageHelper分页的插件,通过 springboot配置文件application.properties进行配置。

# 驱动配置信息spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.url = jdbc:mysql://localhost:3306/master?useUnicode=true&characterEncoding=utf-8  spring.datasource.username = rootspring.datasource.password = rootspring.datasource.driverClassName = com.mysql.jdbc.Driver

#连接池的配置信息## 初始化大小,最小,最大spring.druid.initialSize=5spring.druid.minIdle=5spring.druid.maxActive=20## 配置获取连接等待超时的时间spring.druid.maxWait=60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒spring.druid.timeBetweenEvictionRunsMillis=60000# 配置一个连接在池中最小生存的时间,单位是毫秒spring.druid.minEvictableIdleTimeMillis=300000spring.druid.validationQuery=SELECT 1 FROM DUALspring.druid.testWhileIdle=truespring.druid.testOnBorrow=falsespring.druid.testOnReturn=falsespring.druid.poolPreparedStatements=truespring.druid.maxPoolPreparedStatementPerConnectionSize=20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall‘用于防火墙spring.druid.filters=stat,wall,log4j# 通过connectProperties属性来打开mergeSql功能;慢SQL记录spring.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000#mybatis

#扫描entrity包mybatis.type-aliases-package=cn.jj.modelmybatis.mapper-locations=classpath:mapper/*.xml#mappers 多个接口时逗号隔开#mapper.mappers=tk.mybatis.mapper.common.Mappermapper.mappers=cn.jj.common.MyMappermapper.not-empty=falsemapper.identity=MYSQL

#pagehelperpagehelper.helperDialect=mysqlpagehelper.reasonable=truepagehelper.supportMethodsArguments=truepagehelper.params=count=countSql

到这里,我们就做好了相关的配置。接着创建MyMapper接口继承Mapper。

public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {}

创建实体Bean,使用通用Mapper一定要保证实体类字段和数据库字段一致。如果不一致可以利用注解进行映射。

@Column(name = "nick")    private String name;
@Table(name = "city")public class City implements Serializable{    private static final long serialVersionUID = 1L;    @Id    private String id;    private String name;    private String state;    public String getId() {        return id;    }

public void setId(String id) {        this.id = id;    }

public String getName() {        return name;    }

public void setName(String name) {        this.name = name;    }

public String getState() {        return state;    }

public void setState(String state) {        this.state = state;    }

}

接着,在Mapper接口层继承刚才的MyMapper接口,到这里,单表的增删改查已经实现了。

@Mapperpublic interface CityMapper extends MyMapper<City>{}

接着,我们通过测试类测试下,数据库添加好相应数据。

    @Autowired    private CityMapper cityDao;

//查询    @Test    public void selectAll() {        List<City> city = cityDao.selectAll();        for (City city2 : city) {            System.out.println("id:"+city2.getId()+"\t"+"name:"+city2.getName()+"\t"+"state:"+city2.getState());        }    }

控制台输出结果如下:

其他增删改方法大家大家试着自己尝试,也都特别简单。数据库一共有四条数据,接下来我们加上分页插件。首先我们通过官网看下分页插件所支持的数据库和Mybatis的版本。

可以看出PageHelper支持大部分主流关系型数据库,引用分页插件以后,Mybatis分页会变得特别简单,需要注意的是,在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。详细的使用方法我们看下官网的例子。

例一:

//获取第1页,10条内容,默认查询总数countPageHelper.startPage(1, 10);//紧跟着的第一个select方法会被分页List<Country> list = countryMapper.selectIf(1);assertEquals(2, list.get(0).getId());assertEquals(10, list.size());//分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>assertEquals(182, ((Page) list).getTotal());

例二:

//request: url?pageNum=1&pageSize=10//支持 ServletRequest,Map,POJO 对象,需要配合 params 参数PageHelper.startPage(request);//紧跟着的第一个select方法会被分页List<Country> list = countryMapper.selectIf(1);

//后面的不会被分页,除非再次调用PageHelper.startPageList<Country> list2 = countryMapper.selectIf(null);//list1assertEquals(2, list.get(0).getId());assertEquals(10, list.size());//分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>,//或者使用PageInfo类(下面的例子有介绍)assertEquals(182, ((Page) list).getTotal());//list2assertEquals(1, list2.get(0).getId());assertEquals(182, list2.size());

例三,使用PageInfo的用法:

//获取第1页,10条内容,默认查询总数countPageHelper.startPage(1, 10);List<Country> list = countryMapper.selectAll();//用PageInfo对结果进行包装PageInfo page = new PageInfo(list);//测试PageInfo全部属性//PageInfo包含了非常全面的分页属性assertEquals(1, page.getPageNum());assertEquals(10, page.getPageSize());assertEquals(1, page.getStartRow());assertEquals(10, page.getEndRow());assertEquals(183, page.getTotal());assertEquals(19, page.getPages());assertEquals(1, page.getFirstPage());assertEquals(8, page.getLastPage());assertEquals(true, page.isFirstPage());assertEquals(false, page.isLastPage());assertEquals(false, page.isHasPreviousPage());assertEquals(true, page.isHasNextPage());

下面是我们自己的service层查询方法,使用PageHelper进行分页,取出第二页数据,每页显示两条:

@Overridepublic List<City> selectAll() {    //分页插件的使用 第一个参数是当前页 第二个参数是每页显示的条数    PageHelper.startPage(2, 2);    return cityDao.selectAll();}

再来看一下测试类:

@RunWith(SpringRunner.class)@SpringBootTestpublic class MapperTest {

@Autowired    private CityService cityService;

@Autowired    private UserService userService;

//查询    @Test    public void selectAll() {        List<City> city = cityService.selectAll();        for (City city2 : city) {            System.out.println("id:"+city2.getId()+"\t"+"name:"+city2.getName()+"\t"+"state:"+city2.getState());        }     }  }    

接下来我们开始测试,通过查看控制台输出信息,说明分页已经生效。数据库一共是四条数据,我们取出第二页数据,取出两条。打印结果如下:

到此,通用Mapper和PageHelper已经和spring boot整合完毕!spring boot 对于开发者来说正变得越来越高效、敏捷!
(完)



参考文章

Mybatis通用Mapper
PageHelper官方文档

原文地址:https://www.cnblogs.com/jpfss/p/9117671.html

时间: 2024-08-26 07:00:55

spring-boot | 整合通用Mabatis 分页插件PageHelper的相关文章

Spring Boot集成MyBatis与分页插件

Maven依赖: <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.6</version> </dependency> MybatisConfig.java: import java.util.Properties; import javax.sql.Dat

Mybatis分页插件PageHelper简单使用

1. 引入分页插件 引入分页插件有下面2种方式,推荐使用 Maven 方式. 1). 引入 Jar 包 你可以从下面的地址中下载最新版本的 jar 包 https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/ http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/ 由于使用了sql 解析工具,你还需要下载

Spring Boot系列教程八: Mybatis使用分页插件PageHelper

一.前言 上篇博客中介绍了spring boot集成mybatis的方法,基于上篇文章这里主要介绍如何使用分页插件PageHelper.在MyBatis中提供了拦截器接口,我们可以使用PageHelp最为一个插件装入到SqlSessionFactory,实现拦截器功能. 二.实现 pom.xml文件中添加依赖包 1 <dependency> 2 <groupId>com.github.pagehelper</groupId> 3 <artifactId>pa

Spring Boot MyBatis 通用Mapper插件集成

看本文之前,请确保你已经在SpringBoot中集成MyBatis,并能正常使用.如果没有,那么请先移步 http://blog.csdn.net/catoop/article/details/50553714 做了解后,再按本文步骤操作. 使用MyBatis在我们通过xml集中配置SQL,并通过创建接口Mapper文件来完成持久化DAO层(mybatis内部使用的是动态代理,所以我们不需要自己编写实现类). 然而在实际开发中,单表操作非常多,如果你也想像JPA.JDBC那样做一个所谓的Base

Springboot集成mybatis通用Mapper与分页插件PageHelper(推荐)

插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 Example 相关的单表操作.通用 Mapper 是为了解决 MyBatis 使用中 90% 的基本操作,PageHelper则提供通用的分页查询功能,使用它们可以很方便的进行开发,可以节省开发人员大量的时间. 通用Mapper的GIT地址: https://gitee.com/free/Mapper 分页插件的GIT地址: https://github.com/pagehelp

五、spring boot整合mybatis-plus

spring boot整合mybatis-plus 简介 mybatis 增强工具包,简化 CRUD 操作. 文档 http://mp.baomidou.com http://mybatis.plus 优点 | Advantages 无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对您现有的 Mybatis 构架产生任何影响,而且 MP 支持所有 Mybatis 原生的特性 依赖少:仅仅依赖 Mybatis 以及 My

MyBatis学习总结_17_Mybatis分页插件PageHelper

如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊情况请看重要提示. 想要使用分页插件?请看如何使用分页插件. 物理分页 该插件目前支持以下数据库的物理分页: Oracle Mysql MariaDB SQLite Hsqldb PostgreSQL DB2 SqlServer(2005,2008) Informix H2 SqlServer2012 配置dialect属性时,可以使用小写形式: Oracle,MySQL

SpringBoot集成MyBatis的分页插件PageHelper

俗话说:好??不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效.因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用

SpringBoot集成MyBatis的分页插件PageHelper(回头草)

俗话说:好??不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效.因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用