赞
踩
spring依赖
jdbc依赖
tkmybatis依赖
pagehelper依赖
pagehelper-autoconfigure依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
依赖中的pagehelper依赖相关的有3个, 不要掉哦
- pagehelper
- pagehelper-spring-boot-autoconfigure
- pagehelper-spring-boot-starter
application.properties:
datasource.jdbc-url=jdbc:mysql://localhost:3306/common?characterEncoding=utf-8
datasource.driver-class-name=com.mysql.cj.jdbc.Driver
datasource.username=root
datasource.password=root
spring.profiles.active=develop
server.port=9090
/#控制台打印mybatis语句
logging.level.com.example.mybatisplus.demo=debug
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
配置数据源
配置datasource:
pprefix = "datasource"
在application.properties里找以 datasource
开头的配置,然后spring自动创建datasource
@Bean
@ConfigurationProperties(prefix = "datasource")
public DataSource dataSource(){
return DataSourceBuilder.create().build();
}
配置sqlSessionFactory
@Qualifier("datasource")
是指定名为 datasource 的bean, 也就是上面的datasource
方法, 默认以方法名为bean的名称(如果方法名为Datasource()
, bean的名称为 dataSource, 首字母变小写)
@Bean
public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setVfs(SpringBootVFS.class);
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
//设置mapper.xml的位置
sqlSessionFactoryBean.setMapperLocations(resourcePatternResolver.getResources("classpath:mapper/*.xml"));
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBean.getObject();
return sqlSessionFactory;
}
配置mapper
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
//设置mapper接口的位置
mapperScannerConfigurer.setBasePackage("com.example.mybatisplus.demo.mapper.primary");
Properties properties = new Properties();
//配置的通用mapper, 集成tkbatis的多个接口,可以实现大多数增删改查方法
properties.setProperty("mappers", "com.example.mybatisplus.demo.mapper.core.CustomMapper");
mapperScannerConfigurer.setProperties(properties);
return mapperScannerConfigurer;
}
UserService.java
定义一个简单的接口
public interface UserService {
ResultPage<User> getUserByPage(int pageNo, int pageSize);
}
UserServiceImpl.java
实现UserService接口
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Override
public ResultPage<User> getUserByPage(int pageNo, int pageSize) {
//分页的主要方法, pageNo: 第几页 pageSize: 每页条数
PageHelper.startPage(pageNo,pageSize);
//创建condition
Condition condition = new Condition(User.class);
Example.Criteria criteria = condition.createCriteria();
//条件类似于: select * from User where name = 'wuwei'
criteria.andEqualTo("name", "wuwei");
List<User> users = userMapper.selectByCondition(condition);
PageInfo<User> pageInfo = new PageInfo(users);
ResultPage<User> resultPage = new
ResultPage(pageInfo.getList(),pageInfo.getPageNum(),pageInfo.getPageSize(),pageInfo.getPages());
return resultPage;
}
}
ResultPage.java
封装分页信息的类
package com.example.mybatisplus.demo.model;
/**
* @Author wuwei
* @Date 2019/11/28 10:52 下午
*/
public class ResultPage<T> {
private T data;
private int pageNo;
private int pageSize;
private int allPages;
public ResultPage(T data, int pageNo, int pageSize, int allPages) {
this.data = data;
this.pageNo = pageNo;
this.pageSize = pageSize;
this.allPages = allPages;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getAllPages() {
return allPages;
}
public void setAllPages(int allPages) {
this.allPages = allPages;
}
}
CustomMapper接口
继承tkbatis的接口, 这些接口里面有通用方法, 我们可以不用写sql语句,
上文中,我们在 mapperScannerConfigurer 中配置了此CustomMapper
public interface CustomMapper<T> extends
IdsMapper<T>,
ConditionMapper<T>,
SelectMapper<T>,
Mapper<T> {
}
UserMapper继承CustomMapper
@Repository
public interface UserMapper extends CustomMapper<User> {
}
###控制层controller
ResultResponse
作为一个响应接口返回值的类, 对接口返回进行封装
达到是接口返回值结构 统一 的目的
public class ResultResponse<T> {
private T data;
private int code;
private String msg;
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
BaseController
作为controller的基类, 提供方法将接口数据统一封装成ResultResponse类型的数据
public class BaseController<T> {
protected ResultResponse<T> handleResult(List<T> data){
return handleResult(data, 0, "OK");
}
protected ResultResponse<T> handleResult(T data){
ResultResponse resultResponse = new ResultResponse();
resultResponse.setData(data);
resultResponse.setMsg("OK");
resultResponse.setCode(0);
return resultResponse;
}
private ResultResponse<T> handleResult(List<T> data, int code, String msg){
ResultResponse resultResponse = new ResultResponse();
resultResponse.setData(data);
resultResponse.setCode(code);
resultResponse.setMsg(msg);
return resultResponse;
}
}
UserController
@RestController
@RequestMapping("/start")
public class UserController extends BaseController{
@Autowired
UserMapper userMapper;
@Autowired
UserService userService;
@RequestMapping("/mybatisplus")
public ResultResponse<ResultPage<User>> getUSer(int pageNo, int pageSize){
return handleResult(userService.getUserByPage(pageNo,pageSize));
}
}
User类
model
public class User {
@Id
private Long id;
private String name;
private Integer age;
private String email;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
ps: 如果需要完整代码, GitHub springboot+mybatis+pagehelper简单demo
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。