• 【Mybatis-Plus学习笔记(四)】更新


    本系列博客其他文章请点击下方链接查看
    【Mybatis-Plus学习笔记】目录

    根据id更新

    MP中的updateById需要传入一个实体(必须有ID),不为null的值都会被更改,返回影响的行数。如下:

            User user = new User();
            user.setId(1087982257332887553L);
            user.setName("王十蛋");
            int row = userMapper.updateById(user);
            System.out.println("影响的行数:" + row);
    

    相当于

    ''DEBUG==>  Preparing: UPDATE user SET name=?, age=? WHERE id=? 
    ''DEBUG==> Parameters: 王十蛋(String), 0(Integer), 1087982257332887553(Long)
    

    以条件构造器作为参数的更新方法

    UpdateWrapper<User> queryWrapper = new UpdateWrapper<>();
            queryWrapper.likeRight("name", "王").ge("age", 25);
            User user = new User();
            user.setId(1087982257332887553L);
            user.setName("王九蛋");
            user.setAge(15);
            int row = userMapper.update(user, queryWrapper);
            System.out.println("影响的行数:" + row);
    

    相当于

    ''DEBUG==>  Preparing: UPDATE user SET name=?, age=? WHERE name LIKE ? AND age >= ? 
    ''DEBUG==> Parameters: 王九蛋(String), 15(Integer), 王%(String), 25(Integer)
    

    和Select语句一样,UpdateWrapper也有一个带有实体参数的构造器,这个实体中不为null的参数会出现在Where子句中。非常简单就不举例子了。

    条件构造器中set方法使用

    每次更新都要跟新实体非常的麻烦,可以直接在构造器后使用set方法来实现更改。如下

            UpdateWrapper<User> queryWrapper = new UpdateWrapper<>();
            queryWrapper.likeRight("name", "王").ge("age", 25).set("age", 26);
    

    Lambda条件构造器

    更新也有 Lambda条件构造器,如下:

    LambdaUpdateWrapper<User> lambdaUpdateWrapper = Wrappers.<User>lambdaUpdate();
            lambdaUpdateWrapper.eq(User::getName, "李艺伟").eq(User::getAge, 28).set(User::getAge, 30);
            int row = userMapper.update(null, lambdaUpdateWrapper);
            System.out.println("影响的行数:" + row);
    

    相当于

    ''DEBUG==>  Preparing: UPDATE user SET age=? WHERE name = ? AND age = ? 
    ''DEBUG==> Parameters: 30(Integer), 李艺伟(String), 28(Integer)
    

    和查询一样,更新也有一个链式Lambda条件构造器,如下:

    boolean update = new LambdaUpdateChainWrapper<User>(userMapper)
                    .eq(User::getName, "李艺伟").eq(User::getAge, 28).set(User::getAge, 30)
                    .update();
    
  • 相关阅读:
    线程中死锁的demo
    发布.net core程序碰到的问题
    .net core Identity学习(三) 第三方认证接入
    .net Identity学习(二)OAuth
    .net core Identity学习(一)注册登录
    Git常用操作
    log4net使用
    c#中的Quartz
    jquery中的deferred
    .net core应用部署在IIS上
  • 原文地址:https://www.cnblogs.com/zllk/p/14044698.html
Copyright © 2020-2023  润新知