当前位置:   article > 正文

springboot集成tkbatis,并借助PageHelper进行分页 添加依赖_pagehelper依赖

pagehelper依赖

springboot集成tkbatis,并借助PageHelper进行分页

添加依赖

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

依赖中的pagehelper依赖相关的有3个, 不要掉哦

  • pagehelper
  • pagehelper-spring-boot-autoconfigure
  • pagehelper-spring-boot-starter

结构图

image.png

配置相关

  • 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 配置数据源

    1. 配置datasource:

      pprefix = "datasource" 在application.properties里找以 datasource开头的配置,然后spring自动创建datasource

          @Bean
          @ConfigurationProperties(prefix = "datasource")
          public DataSource dataSource(){
              return DataSourceBuilder.create().build();
          }
      
      • 1
      • 2
      • 3
      • 4
      • 5
    2. 配置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;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    1. 配置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;
          }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14

业务处理层

  • UserService.java

    定义一个简单的接口

    public interface UserService {
        ResultPage<User> getUserByPage(int pageNo, int pageSize);
    }
    
    • 1
    • 2
    • 3
  • 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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 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;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
  • CustomMapper接口

    继承tkbatis的接口, 这些接口里面有通用方法, 我们可以不用写sql语句,

    上文中,我们在 mapperScannerConfigurer 中配置了此CustomMapper

    public interface CustomMapper<T> extends
            IdsMapper<T>,
            ConditionMapper<T>,
            SelectMapper<T>,
            Mapper<T> {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • UserMapper继承CustomMapper

    @Repository
    public interface UserMapper extends CustomMapper<User> {
    
    }
    
    • 1
    • 2
    • 3
    • 4

###控制层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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
  • 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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 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));
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

表结构

在这里插入图片描述

运行

在这里插入图片描述

ps: 如果需要完整代码, GitHub springboot+mybatis+pagehelper简单demo

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/88317
推荐阅读
相关标签
  

闽ICP备14008679号