前言
本文主要是针对SpringBoot2.0.2版本,实现整合mybatis、分页插件、druid等组件,实现完整的web服务,提供restful风格接口。
SpringBoot集成MyBatis有两种方式,一种简单的方式就是使用MyBatis官方提供的:
一、mybatis-spring-boot-starter (本文讲解的) 二、 另外一种方式也是我推荐的整合方式: 就是仍然用类似mybatis-spring的配置方式,这种方式需要自己写一些代码,但是可以很方便的控制MyBatis的各项配置,与添加组件。参考:基础框架
①:在http://start.spring.io/,配置你的项目信息并下载我的是《2.0.2.RELEASE》,我的如下图:
添加整合相关的包:
org.springframework.boot spring-boot-starter-web mysql mysql-connector-java runtime org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2 com.alibaba druid-spring-boot-starter 1.1.10 com.github.pagehelper pagehelper-spring-boot-starter 1.2.5
唯一的属性配置文件
项目不使用application.properties文件 而使用更加简洁的application.yml文件(直接改后缀名):
server: port: 8080spring: application: name: user-center datasource: name: test url: jdbc:mysql://127.0.0.1:3306/xin username: root password: root # 使用druid数据源 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver filters: stat maxActive: 20 initialSize: 1 maxWait: 60000 minIdle: 1 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: select 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxOpenPreparedStatements: 20mybatis: mapper-locations: classpath:mapping/*.xml type-aliases-package: com.winter.model#pagehelper分页插件pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true params: count=countSql#日志级别logging: level: com.xin.usercenter.dao: debug
别的东西和以前一样的,这样就整合完了。
分页实现代码:
public PageInfogetUserBySearch(AppPage page) { // TODO Auto-generated method stub PageHelper.startPage(page.getPageNum(),page.getPageSize()); List list=userDao.queryUserList(page.getParam()); PageInfo pageInfo = new PageInfo (list); return pageInfo;}
返回的PageInfo的数据结构如下:
{ "total": 5, "list": [ { "id": 1, "loginName": "admin", "password": "123123", "nickname": "ADMIN", "type": 1, "state": 1, "note": "超级管理员", "createTime": "2018-04-28 15:15:46", "updateTime": "2018-04-28 15:16:37", "updateUid": 1, "loginIp": null, "loginAddr": null }, { "id": 2, "loginName": "bian", "password": "123456", "nickname": "Bian", "type": 1, "state": 1, "note": "普通用户", "createTime": "2018-06-21 11:25:31", "updateTime": "2018-06-21 11:40:52", "updateUid": 0, "loginIp": null, "loginAddr": null } ], "pageNum": 1, "pageSize": 2, "size": 2, "startRow": 1, "endRow": 2, "pages": 3, "prePage": 0, "nextPage": 2, "isFirstPage": true, "isLastPage": false, "hasPreviousPage": false, "hasNextPage": true, "navigatePages": 8, "navigatepageNums": [ 1, 2, 3 ], "navigateFirstPage": 1, "navigateLastPage": 3, "firstPage": 1, "lastPage": 3}
个人感觉官方返回的这个数据结构很完善了,所以就直接用PageInfo了。
源码地址:
欢迎加入技术讨论群:340697945