前言
本文主要是针对SpringBoot2.0.2版本,实现整合mybatis、分页插件、druid等组件,实现完整的web服务,提供restful风格接口。
SpringBoot集成MyBatis有两种方式,一种简单的方式就是使用MyBatis官方提供的:
一、mybatis-spring-boot-starter (本文讲解的)
二、 另外一种方式也是我推荐的整合方式:
就是仍然用类似mybatis-spring的配置方式,这种方式需要自己写一些代码,但是可以很方便的控制MyBatis的各项配置,与添加组件。参考:https://my.oschina.net/bianxin/blog/1602958
基础框架
①:在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: 8080
spring:
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: 20
mybatis:
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 PageInfo getUserBySearch(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