Foreword
This article is for SpringBoot2.0.2 version, integrate mybatis, pagination plug-ins, druid and other components, to achieve a complete web service, providing restful style interface.
SpringBoot integrated MyBatis has two ways, one simple way is to use MyBatis official offer:
a, mybatis-spring-boot-starter ( article explain)
Second, I recommend another way is the way of integration:
that is still used a similar configuration mybatis-spring, this approach need to write some code, but you can easily control the configuration of MyBatis, and add components. Reference: https://my.oschina.net/bianxin/blog/1602958
Basic framework
①: In http://start.spring.io/, configure your project information and download I was "2.0.2.RELEASE", I figure below:
Add the integration of related packages:
<!-- 2.0后包含spring-boot-starter的web服务包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
The only attribute configuration file
Application.properties project does not use file and use a more concise application.yml file (directly change the suffix):
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
Something else and the same as before, so the integration is over.
Paging implementation code:
public PageInfo<User> getUserBySearch(AppPage<User> page) {
// TODO Auto-generated method stub
PageHelper.startPage(page.getPageNum(),page.getPageSize());
List<User> list=userDao.queryUserList(page.getParam());
PageInfo<User> pageInfo = new PageInfo<User>(list);
return pageInfo;
}
PageInfo returned data structure is as follows:
{
"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
}
Personal feeling is the official return of this data structure is perfect, so the direct use of the PageInfo.
Source Address: https://gitee.com/flying-cattle/earn_knife
Welcome to the technical discussion group: 340 697 945