mybatis-plus的使用

pom.xml文件配置

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mpdb?serverTimezone=UTC
    username: root
    password: root
# 开启mp的日志(输出到控制台)
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  #全局策略配置
  global-config:
    db-config:
      #id生成策略控制
      id-type: assign_id
      #映射表前缀,这样所有表名就不需要设定前缀
      table-prefix: tb_
        # 逻辑删除字段名
      logic-delete-field: deleted
        # 逻辑删除字面值:未删除为0
      logic-not-delete-value: 0
        # 逻辑删除字面值:删除为1
      logic-delete-value: 1

分页查询时需要添加 分页拦截器

 @Test
    public  void  pageTest(){
        IPage<User> page = new Page<>(1,2);
        IPage<User> selectPage = userMapper.selectPage(page, null);
        System.out.println(selectPage);
    }
@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor  interceptor(){
         //MybatisPlus拦截器
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //增加分页拦截器
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }
}

CRUD操作

@SpringBootTest
public class UserMapperTest {

    @Autowired
    private UserMapper userMapper;
    
    /**
     * 分页
     * @throws Exception
     */
    @Test
    public void pageTest() throws Exception {
        IPage<User> ipage = new Page<>(2, 3);
        userMapper.selectPage(ipage, null);
        System.out.println(ipage);
    }

    /**
     * 查询
     * @throws Exception
     */
    @Test
    public void selectTest() throws Exception {
        User user = userMapper.selectById(1);
        System.out.println(user);
        List<User> userList = userMapper.selectBatchIds(Arrays.asList(1, 5, 10));
        userList.forEach(System.out::println);
        //LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<User>()
        //        .eq(User::getName, "tom");//where name = 'tom'
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(User::getName, "jack");//where name = 'tom'
        user = userMapper.selectOne(lambdaQueryWrapper);
        System.out.println(user);
        Integer count = userMapper.selectCount(lambdaQueryWrapper);
        System.out.println(count);
        List<User> users = userMapper.selectList(lambdaQueryWrapper);
        System.out.println(users);
    }

    /**
     * 更新
     *
     * @throws Exception
     */
    @Test
    public void updateTest() throws Exception {
        User user = User.builder()
                //.id(8L)
                //.name("UPDATE")
                .build();
        //int row = userMapper.updateById(user);
        UpdateWrapper<User> wrapper = new UpdateWrapper<>();
        wrapper.set("tel", "13412341234");  // set tel = 13412341234
        wrapper.eq("name", "UPDATE");  // where name = 'UPDATE'
        int row = userMapper.update(user, wrapper);
        System.out.println(row);
    }

    /**
     * 删除
     * @throws Exception
     */
    @Test
    public void deleteTest() throws Exception {
        int row = userMapper.deleteById(29);
        System.out.println(row);

        //row = userMapper.deleteBatchIds(Arrays.asList(15, 18, 21));
        //System.out.println(row);
//
        //QueryWrapper<User> wrapper = new QueryWrapper<>();
        //wrapper.like("name", "Test");   // where name like '%Test%'
        //row = userMapper.delete(wrapper);
        //System.out.println(row);

    }

    /**
     * 增加
     * @throws Exception
     */
    @Test
    public void insertTest() throws Exception {

        /*for (int i = 0; i < 20; i++) {
            User user = User.builder()
                    .name("Test" + i)
                    .age(12)
                    .password("123")
                    .build();
            int row = userMapper.insert(user);
        }*/

        User user = User.builder()
                .name("张五")
                .age(12)
                .password("123")
                .build();
        int row = userMapper.insert(user);
        System.out.println(row);
        System.out.println(user.getId());  //自己通过算法算出来的
    }

    /**
     * mp 快速入门
     * @throws Exception
     */
    @Test
    public void quickTest() throws Exception {
        List<User> userList = userMapper.selectList(null);
        userList.forEach(System.out::println);
    }

聚合函数和链式编程

@SpringBootTest
public class DQLTest {

    @Autowired
    private UserMapper userMapper;

    /**
     * 乐观锁测试
     * @throws Exception
     */
    @Test
    public void optimisticLockerTest() throws Exception {
        //A先查询一次id=30的数据
        User user = userMapper.selectById(30);
        //B先查询一次id=30的数据
        User user2 = userMapper.selectById(30);

        //B先改  成功
        user2.setAge(20);
        userMapper.updateById(user2);

        //A再改  失败
        user.setAge(25);
        userMapper.updateById(user);
    }

    /**
     * 分组,排序
     * @throws Exception
     */
    @Test
    public void groupByAndSortTest() throws Exception {
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        //lambdaQueryWrapper.select(User::getPassword);   // select password
        //lambdaQueryWrapper.groupBy(User::getPassword);  // group by password
        //List<User> userList = userMapper.selectList(lambdaQueryWrapper);
        String name = null;
        lambdaQueryWrapper.orderBy(name != null, true, User::getAge );   // order by age asc
        lambdaQueryWrapper.orderByDesc(User::getAge, User::getName);  // order by age asc
        List<User> userList = userMapper.selectList(lambdaQueryWrapper);
        for (User user : userList) {
            System.out.println(user);
        }


    }

    /**
     * or
     * @throws Exception
     */
    @Test
    public void orTest() throws Exception {
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        //lambdaQueryWrapper.between(User::getAge, 10, 100);
        String name = "Test";
        Integer age = 20;
        lambdaQueryWrapper
                .between(age != null, User::getAge, 10, 100)
                .like(name != null, User::getName, name)
                .or()
                .like(User::getPassword, "123");
        //select 全字段 from user where age between 10 and 20 and name like '%Test%' or password like '%123%'
        List<User> userList = userMapper.selectList(lambdaQueryWrapper);
        for (User user : userList) {
            System.out.println(user);
        }

    }
    
    /**
     * and
     * @throws Exception
     */
    @Test
    public void andTest() throws Exception {
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.ge(User::getAge, 10);    //where age >=10
        lambdaQueryWrapper.lt(User::getAge, 100);   //age < 100
        //链接编程
        lambdaQueryWrapper.like(User::getName, "Test")    //name like '%Test%'
                .likeRight(User::getTel, "13");    // tel like '13%'

        List<User> userList = userMapper.selectList(lambdaQueryWrapper);
        for (User user : userList) {
            System.out.println(user);
        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值