首页 > 其他分享 >小宋的SpringCloud学习记录day01

小宋的SpringCloud学习记录day01

时间:2024-06-12 13:32:35浏览次数:14  
标签:语句 QueryWrapper 小宋 SpringCloud day01 wrapper 更新 id User

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实现来,里面包含了大量的增删改查的方法,继承关系如下图所示:

标签:语句,QueryWrapper,小宋,SpringCloud,day01,wrapper,更新,id,User
From: https://blog.csdn.net/qq_50684356/article/details/139544074

相关文章

  • SpringCloud-OpenFeign拓展-连接池、最佳使用方法、日志输出
    目录1OpenFeign连接池1.1常见连接类型1.2连接池使用方法1.2.1引入依赖1.2.2开启连接池功能1.2.3配置完成,重启实例即可,底层将更改设置。2OpenFeign最佳使用方法2.1每个微服务都是单独的project,内部有三个独立模块2.2每个微服务都是一个module,一个project,内设......
  • 门面模式Api网关(SpringCloudGateway)
    1.前言        当前通过Eureka、Nacos解决了服务注册和服务发现问题,使用SpringCloudLoadBalance解决了负载均衡的需求,同时借助OpenFeign实现了远程调用。然而,现有的微服务接口都直接对外暴露,容易被外部访问。为保障对外服务的安全性,通常在服务端实现的微服务接口会......
  • 网关SpringCloudGateway配置
    1.2.快速入门如何利用网关实现请求路由。由于网关本身也是一个独立的微服务,因此也需要创建一个模块开发功能。大概步骤如下:创建网关微服务引入SpringCloudGateway、NacosDiscovery依赖编写启动类配置网关路由 1.2.1.创建项目首先,我们要在hmall下创建一个新的module,命......
  • 【云岚到家】-day01-项目熟悉-查询区域服务开发
    文章目录1云岚家政项目概述1.1简介1.2项目业务流程1.3项目业务模块1.4项目架构及技术栈1.5学习后掌握能力2熟悉项目2.1熟悉需求2.2熟悉设计2.2.1表结构2.2.2熟悉工程结构2.2.3jzo2o-foundations2.2.3.1工程结构2.2.3.2接口测试3开发区域服务模块3.1......
  • SpringCloud 负载均衡 spring-cloud-starter-loadbalancer
    简述spring-cloud-starter-loadbalancer是SpringCloud中的一个组件,它提供了客户端负载均衡的功能。在SpringCloud的早期版本中,NetflixRibbon被广泛用作客户端负载均衡器,但随着时间推移和NetflixRibbon进入维护模式,SpringCloud社区开始转向更灵活、更易于维护......
  • Vue学习笔记_Day01
    文章目录1,入门案例2,双大括号3,响应式特性4,安装浏览器插件5,指令v-html6,v-show和v-if7,v-else和v-else-if8,v-on9,v-bind10,v-for11,v-model1,入门案例第一步,导入Vue库。<scriptsrc="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>第二步,准备DOM,我们称之为模......
  • 基于SpringCloudAlibaba+Sharding-JDBC的微服务的分库分表设计
    胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,SpringCloudAlibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电......
  • AI编程新手快速体验SpringCloud Alibaba 集成AI功能
    上周六写了一篇文章  震撼发布!SpringAI框架重磅上线,Java集成AI轻松搞定!   部分同学可能没有科学上网的条件,本地ollama集成又比较笨重。趁着周六,写一篇基于SpringCloudAlibaba集成AI的文章。先简单介绍下SpringCloudAlibabaAI。SpringCloudAlibabaAI基......
  • 今日指数day01学习笔记
    1、项目概述    该项目是基于股票实时交易的数据分析产品,为用户和机构提供个性化的股票数据分析和展示服务    核心功能:数据分析和展示为主,功能涵盖了A股大盘实时指数展示、涨幅榜、个股涨跌、个股秒级行情、实时日K线行情等2、股票相关名词    股......
  • 复习day01
    md学习1.标题各级标题为#个数+空格+名字2.字体两侧单*为斜字体双*为粗体三*为斜粗~为删除线3.引用直接>加引用内容4.分割线3个-或者3个*5.图片!+[放图片名]+(图片路径)6.超链接[超链接名字]+(网址)LOL官网(md不支持打开链接)引用博客时使用7.表格ctrl+t设......