ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

02-MyBatisPlus标准数据层开发

2022-06-27 06:31:55  阅读:168  来源: 互联网

标签:02 拦截器 MyBatisPlus id 开发 user import 查询 public


二、标准数据层开发

2.1、MyBatis-Plus的CRUD操作

  • 自己自定义的接口和MyBatis-Plus实现的接口对比,如下表所示

    • 功能 自定义接口 MyBatisPlus接口
      新增 boolean save(T t) int insert(T t)
      删除 boolean delete(int id) int deleteById(Serializable id)
      修改 boolean update(T t) int updateById(T t)
      根据id查询 T selectById(int id) T selectById(Serializable id)
      查询全部 List selectAll() List selectList()
      分页查询 PageInfo selectAll(int page, int size) IPage selectPage(IPage page)
      按条件查询 List selectAll(Condition condition) IPage selectPage(Wrapper queryWrapper)
  • 编写测试类,实现CRUD

    • package com.coolman.test;
      
      import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
      import com.coolman.mapper.UserMapper;
      import com.coolman.model.User;
      import lombok.extern.slf4j.Slf4j;
      import org.junit.jupiter.api.Test;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.boot.test.context.SpringBootTest;
      
      import java.util.List;
      
      @SpringBootTest
      @Slf4j
      public class MyBatisPlusTest {
          // 注入mapper层对象
          @Autowired(required = false)
          private UserMapper userMapper;
      
          @Test
          // 查询所有
          public void selectAllTest() {
              // selectList查询所有用户,参数为null
              List<User> users = userMapper.selectList(null);
      
             users.forEach(user -> {
                 log.info(user + "");
             });
          }
      
          @Test
          // 根据id查询
          public void selectByIdTest() {
              User user = userMapper.selectById(1);
              log.info("根据id查询:::"  + user + "");
          }
      
          @Test
          // 根据特定条件查询(如查询大于18岁)
          public void selectByConditionTest() {
              // 1. 创建一个条件对象
              QueryWrapper<User> queryWrapper = new QueryWrapper<>();
              // 2. 在条件对象中设置条件
              queryWrapper.gt("age", 18);
      
              // 3. 调用mapper接口
              List<User> userList = userMapper.selectList(queryWrapper);
      
              userList.forEach(user -> {
                  log.info("条件查询(大于18岁):::" + user);
              });
      
          }
      
          @Test
          // 新增
          public void insertTest() {
              // 初始化一个user对象
              User user = new User();
      //        user.setId();     // Mybatis-plus会实现随机id
              user.setAge(18);
              user.setName("猛男");
              user.setGender("男");
              user.setTel("18950184444");
              user.setPassword("123");
      
              // 调用mapper接口
              userMapper.insert(user);
          }
      
          // 修改
          @Test
          public void updateByIdTest() {
              User user = new User();
              user.setId(1541171229338210306L);   // 刚才新增的时候的id
              user.setName("超级猛男");
              user.setGender("女");
      
              // 调用mapper接口
              userMapper.updateById(user);
          }
      
          // 删除
          @Test
          public void deleteByIdTest() {
      
              // 调用mapper接口
              userMapper.deleteById(1541171229338210306L);
          }
      
      }
      
    • 具体实现效果这里就不过多演示,有兴趣可以自己运行起来后仔细查看SQL语句

2.2、MyBatis-plus分页操作

  • 1、设置分页拦截器作为Spring管理的Bean

    • ①、在config包下创建一个配置类:MyBatisPlusConfig

    • ②、在类上添加@Configuration注解

    • ③、编写方法

      • 1.方法上使用@Bean注解:添加MybatisPlusInterceptor对象到容器中
      • 2.创建MybatisPlusInterceptor拦截器对象
      • 3.添加内部分页拦截器:创建PaginationInnerInterceptor
    • package com.coolman.config;
      
      import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
      import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      @Configuration
      public class MyBatisPlusConfig {
      
          /*
              在执行selectPage方法的时候,这个拦截器会帮助开发人员拼接limit语句
              从而实现分页
           */
          @Bean
          public MybatisPlusInterceptor createMybatisPlusInterceptor() {
              // 1. 创建Mybatis-Plus拦截器
              MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
      
              // 2. 给Mybatis-Plus拦截器添加分页拦截器
              mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
      
              // 3. 返回拦截器
              return mybatisPlusInterceptor;
          }
      }
      
      
  • 2、在测试类中执行分页查询

    • ①、创建分页对象,前面是接口IPage,后面是实现类Page(第几页,每页大小)

    • ②、调用selectPage方法,传入Page对象(无需返回值

    • ③、获取分页结果

    •     // 分页查询
          @Test
          public void selectPageTest() {
              // 创建Page对象
              // 这个Page对象就相当于以前使用的PageInfo对象,封装整个分页的数据
              Page<User> userPage = new Page<>(1, 3);     // 1 是页码, 3 是页面大小
      
              // 分页结果会封装到Page对象中
              userMapper.selectPage(userPage, null);
      
              log.info("当前页面:::" + userPage.getCurrent());
              log.info("页面大小:::" + userPage.getSize());
              log.info("页面数据:::" + userPage.getRecords());
              log.info("总记录数:::" + userPage.getTotal());
              log.info("总页数:::" + userPage.getPages());
          }
      

标签:02,拦截器,MyBatisPlus,id,开发,user,import,查询,public
来源: https://www.cnblogs.com/OnlyOnYourself-lzw/p/16414944.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有