Spring_FrameWork_10(MyBatisPlus)

news2024/9/22 19:42:59

在这里插入图片描述
在这里插入图片描述
lombok
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

    @Test
    void selectById(){
        IPage page = new Page(2,2);
        bookDao.selectPage(page,null);
        System.out.println("当前页码值:"+page.getCurrent());
        System.out.println("每页显示数:"+page.getSize());
        System.out.println("一共多少页:"+page.getPages());
        System.out.println("一共多少数据:"+page.getTotal());
        System.out.println("数据:"+page.getRecords());
    }

条件查询
在这里插入图片描述
方法一:

    @Test
    void selectById(){
        QueryWrapper qw = new QueryWrapper();
        qw.lt("id",3);
        List<Book> list = bookDao.selectList(qw);
        System.out.println(list);
    }

查询id小于3的数据

方法二:lam表达式

    @Test
    void selectById(){
        QueryWrapper<Book> qw = new QueryWrapper();
        qw.lambda().lt(Book::getId,3);
        List<Book> list = bookDao.selectList(qw);
        System.out.println(list);
    }

方法三:

    @Test
    void selectById(){
        LambdaQueryWrapper<Book> lwq = new LambdaQueryWrapper<Book>();
        lwq.lt(Book::getId,3);
        List<Book> list = bookDao.selectList(lwq);
        System.out.println(list);
    }

    @Test
    void selectById(){
        LambdaQueryWrapper<Book> lwq = new LambdaQueryWrapper<Book>();
        lwq.lt(Book::getId,3).or().gt(Book::getId,1);
        List<Book> list = bookDao.selectList(lwq);
        System.out.println(list);
    }

    @Test
    void selectById(){
        LambdaQueryWrapper<Book> lwq = new LambdaQueryWrapper<Book>();
        lwq.lt(Book::getId,3).gt(Book::getId,1);
        List<Book> list = bookDao.selectList(lwq);
        System.out.println(list);
    }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查询投影

    @Test
    void selectById(){
        BookQuery bookQuery = new BookQuery();
        //bookQuery.setId(1L);
        bookQuery.setId2(3L);

        LambdaQueryWrapper<Book> lwq = new LambdaQueryWrapper<Book>();
        lwq.lt(null!=bookQuery.getId2(),Book::getId,bookQuery.getId2())
                .gt(null!=bookQuery.getId(),Book::getId,bookQuery.getId());
        List<Book> list = bookDao.selectList(lwq);
        System.out.println(list);
    }

相当于将查询参数提出到一个类里,并通过condition参数判断是否满足条件

    @Test
    void selectById(){
        LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<>();
        lqw.select(Book::getId,Book::getName,Book::getDescription);
        List<Book> list = bookDao.selectList(lqw);
        System.out.println(list);
    }
    @Test
    void selectById(){
        QueryWrapper<Book> lqw = new QueryWrapper<>();
        lqw.select("count(*)  as count");
        List<Map<String, Object>> list = bookDao.selectMaps(lqw);
        System.out.println(list);
    }

使用map集合来存储非lambda表达式查询结果

    @Test
    void selectById(){
        QueryWrapper<Book> lqw = new QueryWrapper<>();
        lqw.select("count(*)  as count,name");
        lqw.groupBy("name");
        List<Map<String, Object>> list = bookDao.selectMaps(lqw);
        System.out.println(list);
    }

对name进行分组查询
在这里插入图片描述
查询条件

    @Test
    void selectById(){
        QueryWrapper<Book> lqw = new QueryWrapper<>();
        lqw.between("id",1,2);
        List<Book> list = bookDao.selectList(lqw);
        System.out.println(list);
    }

在这里插入图片描述
在这里插入图片描述

    @Test
    void selectById(){
        LambdaQueryWrapper<Book> lwq = new LambdaQueryWrapper<>();
        lwq.like(Book::getName,"t");
        List<Book> list = bookDao.selectList(lwq);
        System.out.println(list);
    }
@TableName("tb_book")
@Data
public class Book {

    private Long id;
    private String name;
    private String type;
    @TableField("description")
    private String description;
    @TableField(exist = false)
    private String online;

}

@TableName与数据库表名对应
@TableField可以与表数据项对应

id生成策略
在这里插入图片描述
在这里插入图片描述
因为就算数据库的id字段设置自增后,由于idea,必须在对应的实体类中的id字段设置@TableId(type = IdType.AUTO),才可以实现id自增,不然就算默认的长字符串

@TableName("tb_book")
@Data
public class Book {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private String type;
    @TableField("description")
    private String description;
    @TableField(exist = false)
    private String online;

}

在这里插入图片描述
在这里插入图片描述
用来对tablename进行全局配置

mybatis-plus:
  global-config:
    db-config:
      id-type: assign_id

来对idtype(id生成策略进行全局配置)
在这里插入图片描述
逻辑删除

    @TableLogic(value = "0",delval = "1")
    private Integer deleted;

可以直接配置 @TableLogic注解来配置逻辑删除,value表示没有删除,delval表示删除
也可以通过

mybatis-plus:
  global-config:
    db-config:
      id-type: assign_id
      logic-delete-field: deleted
      logic-delete-value: 1
      logic-not-delete-value: 0

来配置全局逻辑删除
logic-delete-field:表示逻辑删除字段
logic-not-delete-value:表示未删除的值
logic-delete-value:表示已经删除的值

乐观锁
1.使用注解定义变量

    @Version
    private Integer version;

2.配置拦截器

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return mybatisPlusInterceptor;
    }

3.直接把找到的pojo查询再修改

代码生成器
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java---微服务---Nacos集群搭建

Nacos集群搭建1.集群结构图2.搭建集群2.1.初始化数据库2.2.下载nacos2.3.配置Nacos2.4.启动2.5.nginx反向代理2.6.优化1.集群结构图 官方给出的Nacos集群图&#xff1a; 其中包含3个nacos节点&#xff0c;然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。 我们…

解锁Windows所有电源选项

20230123 By wdhuag 目录 参考&#xff1a; 查看当前选项&#xff1a; 警告&#xff01;修改前&#xff0c;先使用Registry Workshop备份注册表&#xff0c;导出PowerSettings&#xff1a; 在PowerSettings里增加Attributes参数&#xff08;十六进制、数值2&#xff09;&a…

Shell脚本从入门到实战

Shell 文章目录Shellshell概述Shell脚本入门1. 脚本格式2. 第一个Shell脚本:helloworld3. 第二个Shell脚本&#xff1a;多命令处理Shell中的变量系统变量1. 常用系统变量2. 案例实操自定义变量1. 基本语法2. 变量定义规则特殊变量&#xff1a;$n特殊变量&#xff1a;$#特殊变量…

零基础学JavaWeb开发(二十二)之 springmvc入门到精通

一、SpringMVC概述 1、三层架构与MVC架构区别 1.1、三层架构 表示层&#xff1a;主要对用户的请求接受&#xff0c;以及数据的返回&#xff0c;为客户端提供应用程序的访问。 servlet层 业务逻辑层&#xff1a;对我们数据实现业务逻辑的封装 service层 数据访问层&#xf…

【Java|golang】2303. 计算应缴税款总额

给你一个下标从 0 开始的二维整数数组 brackets &#xff0c;其中 brackets[i] [upperi, percenti] &#xff0c;表示第 i 个税级的上限是 upperi &#xff0c;征收的税率为 percenti 。税级按上限 从低到高排序&#xff08;在满足 0 < i < brackets.length 的前提下&am…

【JavaScript】多态(Symbol),迭代器接口,getter/setter

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录多态symbol迭代器接口实现数组的迭代器方法练习Getter/Setter多态 我拿到一个对象&#xff0c;这…

【JavaScript】正则表达式详解

&#x1f4bb;【JavaScript】正则表达式&#x1f3e0;专栏&#xff1a;JavaScript &#x1f440;个人主页&#xff1a;繁星学编程&#x1f341; &#x1f9d1;个人简介&#xff1a;一个不断提高自我的平凡人&#x1f680; &#x1f50a;分享方向&#xff1a;目前主攻前端&#…

MySQL(五):事务简介、事务的特性、事务的概念及状态、支持事务的引擎

目录一、事务的起源二、事务的特性2.1 原子性(Atomicity)2.2 隔离性(Isolation)2.3 一致性(Consistency)2.4 持久性(Durability)三、事务的概念及状态四、支持事务的引擎一、事务的起源 事务源于日常生活中的业务&#xff0c;现有这样的一个场景&#xff0c;A账户有11元&#…

人工智能学习06--pytorch04--transforms

transforms主要对图片进行一些变换 transform该如何使用&#xff08;python&#xff09; 从transform中选择一个class&#xff0c;进行创建 依据创建的工具看需要什么&#xff08;如img&#xff09; 为什么需要tensor的数据类型 tensor数据类型&#xff1a;包装了神经网络…

opencv win10 4.7.0 源码编译 vs2019 cmake

下载opencv & opencv-contrib 4.7.0源码&#xff1b;注意下载地址https://github.com/opencv/opencv/releases https://github.com/opencv/opencv_contrib/releases/tag/4.7.0 版本要一模一样cmake输出文件夹为&#xff1a;opencv-4.7.0-build 遇到下载问题如下&#xf…

常见递归模式

常见递归模式递归模式遍历二叉树模式回溯模式子问题分解模式递归模式 常见递归模式&#xff1a; 遍历二叉树模式回溯模式子问题分解模式 遍历二叉树模式 只要涉及递归的问题&#xff0c;都是树的问题&#xff0c;或者说树的遍历。 void traverse(TreeNode root) { // 遍历…

混合背包问题

混合背包问题一、问题二、分析三、代码一、问题 二、分析 混合背包问题就是将我们之前讲过的01背包&#xff0c;完全背包&#xff0c;分组背包&#xff0c;多重背包问题等等中的任意几个混合在一起。因此想要解决这个问题&#xff0c;就需要对01背包&#xff0c;完全背包&…

PDF划词翻译软件

PDF划词翻译 一个简单的PDF划词翻译软件。 Github仓库地址&#xff1a;https://github.com/WCX1024979076/simple_pdf_translator Github下载地址&#xff1a; https://github.com/WCX1024979076/simple_pdf_translator/releases/tag/v0.1.0 Gitee仓库地址&#xff1a; htt…

ROS2机器人编程简述humble-第三章-COMPUTATION GRAPH .2

ROS2机器人编程简述humble-第三章-PERCEPTION AND ACTUATION MODELS .1避开障碍物计算图如何呢&#xff1f;该应用程序的计算图非常简单&#xff1a;订阅激光主题的节点向机器人发布速度命令。控制逻辑解释&#xff1a;输入的感知信息并产生控制命令&#xff08;输出&#xff0…

深度学习:DenseNet思想总结

深度学习&#xff1a;DenseNet思想总结前言DenseNetResNetDense connectionComposite functionPooling layersGrowth rateBottleneck layersCompressionImplementation Details总结前言 论文中提出的架构为了确保网络层之间的最大信息流&#xff0c;将所有层直接彼此连接。为了…

JUC面试(八)——阻塞队列

阻塞队列 队列&#xff0c;FIFO BlockingQueue 阻塞队列&#xff0c;排队拥堵&#xff0c;首先它是一个队列&#xff0c;而一个阻塞队列在数据结构中所起的作用大致如下图所示&#xff1a; 线程1往阻塞队列中添加元素&#xff0c;而线程2从阻塞队列中移除元素 当阻塞队列是空…

Java基础(程序流程控制)

程序流程控制1..顺序结构程序从上到下逐行执行&#xff0c;中间没有判断和跳转2.分支结构根据条件&#xff0c;选择性执行某段代码有if-else和switch-case两种分支需要注意根据相应的方法&#xff0c;来输入指定类型的值。如果不匹配则会异常&#xff1a;InputMisMatchExceptio…

结构型模式-桥接模式

1.概述 现在有一个需求&#xff0c;需要创建不同的图形&#xff0c;并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系&#xff1a; 我们可以发现有很多的类&#xff0c;假如我们再增加一个形状或再增加一种颜色&#xff0c;就需要创建更多的类。试…

2.5总线标准

文章目录一、引子二、总线标准1.基本概念2.总线标准&#xff08;1&#xff09;系统总线①ISA②EISA扩展总线③拓展&#xff08;2&#xff09;局部总线①VESA②PCI③AGP④PCI-E&#xff08;3&#xff09;设备总线①RS-232C②SCSI③PCMCIA④USB3.连接硬盘总线标准①IDE②SATA三、…

JAVA 服务内存占用太高

一、问题现象 某天&#xff0c;运维老哥突然找我&#xff1a;“你们的某 JAVA 服务内存占用太高&#xff0c;告警了&#xff01;GC 后也没释放&#xff0c;内存只增不减&#xff0c;是不是内存泄漏了&#xff01;” 然后我赶紧看了下监控&#xff0c;一切正常&#xff0c;距离上…