小宋的SpringCloud学习记录day01

MybatisPlus

条件构造器

基于QueryWrapper的查询

MybatisPlus中写好的QueryWrapper方法省去了编写复杂sql语句的繁琐,直接把各种条件集成为对应的方法

需求:

1.查询出名字中带o的,存款大于等于10000的人的id、username、info、balance字段

2.更新用户名为jack的用户余额为2000

上面是传统的sql语句,我们来看一下用QueryWrapper怎么写

首先我们在test测试类中写语句

创建一个QueryWrapper对象用链式编程来查找出名字中带o的,存款大于等于10000的人的id、username、info、balance,用selectList方法来返回一个集合在进行foreach遍历打印

  @Test
    void testQueryWrapper(){
        //1.构建查询条件
         QueryWrapper<User> wrapper = new QueryWrapper<User>()
                .select("id", "username", "info", "balance")
                        .like("username", "o")
                                .ge("balance", 1000);
        //2.查询
        List<User> users = userMapper.selectList(wrapper);
        //3.遍历打印
        users.forEach(System.out::println);
    }

下面让我们再来看更新语句

  @Test
    void testUpdateByQueryWrapper(){
        //1.要更新的数据
        User user = new User();
        user.setBalance(2000);
        //2.更新的条件
        QueryWrapper<User> wrapper = new QueryWrapper<User>()
                .eq("username", "jack");
        //3.执行更新
        userMapper.update(user,wrapper);
    }

我们要注意的是QueryWrapper起到了一个更新条件的作用,在执行更新语句的时候要把要更新的数据以及wrapper条件传进去才可以更新成功

基于UpdateWrapper的更新:

需求:更新id为1,2,4的用户余额,扣两百

传统sql语句:

UPDATE user
   SET balance = balance -200
   WHERE id in (1,2,4)

基于UpdateWrapper

    @Test
    void testUpdateWrapper(){
        List<Long> ids = List.of(1L, 2L, 4L);
        UpdateWrapper<User> wrapper = new UpdateWrapper<User>()
                .setSql("balance = balance -200")
                        .in("id",ids);
        userMapper.update(null,wrapper);
    }

先声明一个list集合来存储要更新的id的值,再用UpdateWrapper声明更新语句,setSql方法用来自己写sql语句再使用update更新语句,更新数据库的值。

同理增删改查语句都可以用wrapper来实现,非常方便。

LambdaQueryWrapper

上面的wrapper语句都是写死的,属于硬编码,LambdaWrapper就是用来解决这个问题额

   @Test
    void testLambdaQueryWrapper(){
        //1.构建查询条件
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>()
                .select(User::getId,User::getUsername,User::getBalance,User::getInfo)
                        .like(User::getUsername, "o")
                                .ge(User::getBalance, 1000);
        //2.查询
        List<User> users = userMapper.selectList(wrapper);
        //3.遍历打印
        users.forEach(System.out::println);
    }

LambdaQueryWrapper与QueryWrapper的区别就是select语句穿的不是写死的值,而是一个function函数用来get到id、username等字段,实际上还是获取的一个column字段,但是避免了硬编码问题

所以更加推荐LambdaQueryWrapper。

自定义SQL

需求:将id在指定范围的用户(例如1、2、4)的余额扣减指定值

我们可以利用MybatisPlus的Wrapper来构建复杂的where条件,然会自己定义SQL语句剩下的部分

1.基于Wrapper构建where条件

    @Test
    void testCustomeSqlUpdate(){
        //1.更新条件
        List<Long> ids = List.of(1L, 2L, 4L);
        int amount = 200;
        //2.定义条件
        UpdateWrapper<User> wrapper = new UpdateWrapper<User>().in("id",ids);
        //3.调用自定义sql方法
        userMapper.updateBalanceByIds(wrapper,amount);
    }

IService接口:

 MybatisPlus很贴心的为我们提供了IService接口以及对应的ServiceImpl实现来,里面包含了大量的增删改查的方法,继承关系如下图所示:

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值