欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Springboot集成mybatis通用Mapper与分页插件PageHelper

程序员文章站 2022-07-15 10:47:19
...

插件介绍:

  1. 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 Example 相关的单表操作。
  2. PageHelper则提供通用的分页查询功能,使用它们可以很方便的进行开发,可以节省开发人员大量的时间。

导入依赖:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 通用mapper -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>
        <!-- pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>
        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.2</version>
        </dependency>
    </dependencies>

属性配置:

######### 数据库配置 ##########
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/bai?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
######### Mybatis自身配置 ##########
mybatis.typeAliasesPackage=com.example.demo.model
mybatis.mapperLocations=classpath:mapper/**/*.xml
# 驼峰命名规范
mybatis.configuration.map-underscore-to-camel-case=true
# 配置控制台打印sql
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
######### 通用Mapper ##########
# 主键自增回写方法,默认值MYSQL,详细说明请看文档
mapper.identity=MYSQL
mapper.mappers=tk.mybatis.mapper.common.BaseMapper
# 设置 insert 和 update 中,是否判断字符串类型!=''
mapper.not-empty=true
######### 分页插件 ##########
pagehelper.helper-dialect=mysql
pagehelper.params=count=countSql
pagehelper.reasonable=false
pagehelper.support-methods-arguments=true

设置MyMapper:

package com.example.demo.MyMapper;

import tk.mybatis.mapper.common.IdsMapper;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

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

实体类:

package com.example.demo.model;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;


@Data
@Table(name = "shiro_user")
public class ShiroUser implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long userId;
	//用户登录账号
	private String userAccount;
	//用户登录密码
	private String userPassword;
	//用户名
	private String userName;
	//用户状态: 1=正常 2=禁用
	private Integer userStatus;
	//创建日期
	private Date createdDate;
	//最近登录时间
	private Date lastLoginTime;
	//最近更新时间
	private Date updateTime;
	//备注
	private String userDesc;

}

 

dao层:

package com.example.demo.dao;

import com.example.demo.MyMapper.MyMapper;
import com.example.demo.model.ShiroUser;

public interface ShiroUserMapper extends MyMapper<ShiroUser> {
}

service层:

package com.example.demo.service;

import com.example.demo.model.ShiroUser;

public interface ShiroUserService {

    List<ShiroUser> listUser();
}
package com.example.demo.service.impl;

import com.example.demo.dao.ShiroUserMapper;
import com.example.demo.service.ShiroUserService;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ShiroUserServiceImpl implements ShiroUserService {

    @Autowired
    private ShiroUserMapper shiroUserMapper;

    // 分页以及排序
    @Override
    public Object listPageUser() {
        return PageHelper.startPage(1, 5).setOrderBy("user_id desc").doSelectPageInfo(() -> shiroUserMapper.selectAll());
    }
}

controller层:

package com.example.demo.controller;

import com.example.demo.service.ShiroUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("demo")
public class ShiroUserController {

    @Autowired
    private ShiroUserService shiroUserService;

    @RequestMapping("pageUser")
    public Object pageUser(){
        return shiroUserService.listPageUser();
    }
}

启动类:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan("com.example.demo.dao")
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}