• mybatis plus 中增删改查及Wrapper的使用


    本文为博主原创,未经允许不得转载:

      mybatis plus 通过封装  baseMapper 以及 ServiceImpl ,实现对数据库的增删改查操作,baseMapper 是我们通常所说的 dao 层或 mapper 层,

    ServiceImpl  是我们通常所说的 业务层,其内部标注了事务回滚,以及它内部的实现很多也是通过 baseMapper 进行实现的。

    IService 依赖于 Spring 容器,而 BaseMapper 不依赖我们在应用的时候

    根据自己的便捷性,选择合适的方法即可。 前面的博客中已经搭建了 spring boot + mybaits plus 的框架,其中定义了 UserMapper 和 UserServiceImpl ,

    代码及博客的链接如下:

    搭建 spring boot + mybatis plus 项目框架并进行调试

      1. 查询:

        封装查询参数的Wrapper 有两种方式,效果是等同的;

       QueryWrapper<User> wrapper = new QueryWrapper<>();  与  Wrappers.<User>query().lambda() 是相同的

    @Slf4j
    @SpringBootTest
    class DemoApplicationTests {
    
        @Autowired
        private UserMapper userMapper;
    
        @Autowired
        private UserService userService;
    
         @Test
        void query() {
            QueryWrapper<User> wrapper = new QueryWrapper<>();
            wrapper.eq("name", "2");
            // 1.根据QueryWrapper 进行条件查询
            User user = userMapper.selectOne(wrapper);
            // 2.使用 Wrappers 的lamda表达式进行查询
            userService.list(Wrappers.<User>query().lambda().eq(User::getName,"test"));
    
            Map<String,Object> paramsMap = new HashMap<>();
            paramsMap.put("name","test");
            // 3.使用map封装查询参数,查询列表
            List<User> users= (List<User>) userService.listByMap(paramsMap);
    
            // 4.查询总数
            int count = userService.count();
            // 5.根据条件查询总数
            int count2 = userService.count(Wrappers.<User>query().lambda().eq(User::getName,"test"));
        }  
    
    }

      2。修改

      @Test
        void update() {
            User user = new User();
            user.setAge(23);
            user.setEmail("344");
            user.setName("test333");
            UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
            updateWrapper.eq("id","1");
            // 1.user 中封装修改的属性值, updateWrapper 中封装修改的条件参数值
            userService.update(user,updateWrapper);
    
            // 2.根据条件修改对应的参数属性值
            userService.update(Wrappers.<User>update().lambda().set(User::getName, "2").eq(User::getAge, 23));
        
         // 3.判断参数是否为空,并进行修改
         String name = "name";
         userService.update(Wrappers.<User>update().lambda().set(StringUtils.isNotBlank(name),User::getName, name).eq(User::getAge, 23));
    }

      3.新增

        @Test
        void save() {
            User user = new User();
            user.setAge(23);
            user.setEmail("344");
            user.setName("test");
            // 1.使用service新增
            userService.save(user);
            // 2.使用mapper 新增
            userMapper.insert(user);
        }

      4.删除

     @Test
        void delete() {
            // 根据条件删除
            userService.remove(Wrappers.<User>query().lambda().eq(User::getAge, 3));
        }

      5.mybatis plus 封装的函数列表:

  • 相关阅读:
    每日一(水)题
    操作树学习笔记
    「THUSCH 2017」大魔法师
    几个规律
    DP专题(DP进阶题单 )
    康托展开&逆康托展开
    一道题目
    P5629 【AFOI-19】区间与除法 题解
    留言板
    NOIP2020考试总结
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/14323081.html
Copyright © 2020-2023  润新知