• Mybatis-Plus强大的条件构造器queryWrapper、updateWrapper


    一、条件构造器关系

            

    二、Wapper介绍 :

         1、Wrapper :条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示

         2、AbstractWrapper :用于查询条件封装,生成 sql 的 where 条件

         3、AbstractLambdaWrapper :Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。

         4、LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper

         5、LambdaUpdateWrapper : Lambda 更新封装Wrapper

         6、QueryWrapper : Entity 对象封装操作类,不是用lambda语法

         7、UpdateWrapper : Update 条件封装,用于Entity对象更新操作

            

    三、Mybatis-Plus的CRUD方法

       1、通过id更新信息:updateById(Object obj);

      2、插入记录:insert(Object obj)

      3、根据id批量删除:

    1. List<Integer> list = new ArrayList<>();
    2. list.add(1);
    3. list.add(2);
    4. list.add(3);
    5. int del = mapper.deleteBatchIds(list);

      4、根据id删除:deleteById(id)

      5、根据map条件进行删除:

    1. HashMap<String, Object> map = new HashMap<>(16);
    2. map.put("email", "lqf@163.com");
    3. map.put("age", 12);
    4. int del = mapper.deleteByMap(map);

      6、通过id查询对象:selectById(id)

      7、通过多个id进行查询:

    1. List<Long> list = new ArrayList<>();
    2. list.add(1L);
    3. list.add(2L);
    4. list.add(3L);
    5. List<User> list1 = mapper.selectBatchIds(list);

       8、通过条件进行实体list查询:

    1. HashMap<String, Object> map = new HashMap<>(16);
    2. map.put("email", "lqf@163.com");
    3. map.put("age", 12);
    4. List<User> list = mapper.selectByMap(map);

        9、分页查询:

    1. Page<User> page = new Page<>(1,5);
    2. IPage<User> lstUser = mapper.selectPage(page, null);

        10、分页插件:

    1. @Configuration
    2. @ConditionalOnClass(value = PaginationInterceptor.class)
    3. public class MybatisPlusPageConfig {
    4. @Bean
    5. public PaginationInterceptor paginationInterceptor(){
    6. PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
    7. return paginationInterceptor;
    8. }
    9. }

    四、示例:

       1、根据 entity 条件,查询一条记录,使用seletOne返回的是一条实体记录,当出现多条时会报错

    1. @Test
    2. public void findOne(){
    3. QueryWrapper<Book> queryWrapper = new QueryWrapper<>();
    4. queryWrapper.eq("book_id","57");
    5. Book book = bookMapper.selectOne(queryWrapper);
    6. System.out.println(book);
    7. }

       2、根据 Wrapper 条件,查询总记录数

    1. @Test
    2. public void counts(){
    3. QueryWrapper<Book> queryWrapper = new QueryWrapper<>();
    4. queryWrapper.eq("book_author","陈真");
    5. Integer count = bookMapper.selectCount(queryWrapper);
    6. System.out.println("总数="+count);
    7. }

     

       3、根据 entity 条件,查询全部记录(并分页)

         (1)定义分页插件类:

    1. @Configuration
    2. @ConditionalOnClass(value = PaginationInterceptor.class)
    3. public class MybatisPlusPageConfig {
    4. @Bean
    5. public PaginationInterceptor paginationInterceptor(){
    6. PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
    7. return paginationInterceptor;
    8. }
    9. }

            (2)分页查询:

    1. @Test
    2. public void pages(){
    3. Page<Book> page = new Page<>(1,5);//参数一是当前页,参数二是每页显示的记录数
    4. QueryWrapper<Book> queryWrapper = new QueryWrapper<>();
    5. IPage<Book> bookIPage = bookMapper.selectPage(page,queryWrapper);
    6. for(Book book : bookIPage.getRecords()){
    7. System.out.println(book);
    8. }
    9. }

         4、根据 entity 条件,查询全部记录(并分页)---另一种方式

    1. @Test
    2. public void pageMap(){
    3. Page<Book> page = new Page<>(1,5);//参数一是当前页,参数二是每页显示的记录数
    4. QueryWrapper<Book> queryWrapper = new QueryWrapper<>();
    5. IPage<Map<String,Object>> bookMap = bookMapper.selectMapsPage(page,queryWrapper);
    6. List<Map<String,Object>> mapList = bookMap.getRecords();
    7. for(int i=0;i<mapList.size();i++){
    8. System.out.println(mapList.get(i));
    9. }
    10. }

         5、根据 where条件,更新记录

    1. @Test
    2. public void update(){
    3. Book book = new Book();
    4. book.setBookAuthor("张飞");
    5. UpdateWrapper<Book> updateWrapper = new UpdateWrapper<>();
    6. updateWrapper.eq("book_id","58");
    7. int k= bookMapper.update(book,updateWrapper);
    8. }

          6、根据根据 entity 条件,删除记录

    1. @Test
    2. public void delete(){
    3. QueryWrapper<Book> queryWrapper = new QueryWrapper<>();
    4. queryWrapper.eq("book_id","16");
    5. int del = bookMapper.delete(queryWrapper);
    6. }

  • 相关阅读:
    【抓包工具】win 10 / win 11:WireShark 下载、安装、使用
    Spring Boot集成antlr实现词法和语法分析
    使用国内代理该如何开展网页抓取项目?
    dijkstra算法+链表储存+优先队列
    CLion常用插件及c文件模板配置
    【C++数据结构】线性表的顺序存储结构
    java计算机毕业设计民宿运营管理网站源码+mysql数据库+系统+lw文档+部署
    nginx--技术文档--架构体系--底层核心-原理
    WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较
    一文入门Qt Quick
  • 原文地址:https://blog.csdn.net/m0_37911706/article/details/125626414