mybatis-plus的操作(新增,修改)(代码片段)

花果水莲 花果水莲     2023-04-02     270

关键词:

一、springboot整合mybatis-plus

1.1 springboot在整合mybatis-plus时,pom文件中的坐标

一般同时会引入Druid。

<!-- springboot整合mybatis-plus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>
<!-- springboot整合mysql-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<!-- springboot整合druid-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version>
</dependency>

1.2 application.yml配置文件

spring:
  application:
    name: springboot_mysql
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
      username: root
      password: root

mybatis-plus:
  configuration:
    #执行的sql语句,会打印在控制台上
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      #id增长策略
      id-type: assign_id
      #数据库表与模型的关系
      table-prefix: tbl_

1.3 数据库表与模型关系的映射关系

MP会默认将模型类的类名首字母小写作为表名使用,假如数据库名称都以tbl_开头,那么我们就需要将所有的模型类上添加@TableName,配置起来还是比较繁琐,简化方式可以在配置文件中配置如下内容:

mybatis-plus: 
    global-config: 
        db-config: 
            table-prefix: tbl_

设置前缀的内容,这样MP就会拿tbl_加上模型类的首字母小写,就刚好组装成数据库的表名。

二、新增

2.1、@TableId(type = IdType.策略)注解,主键的生成策略

在向数据库表中新增数据时,往往Id都是自动生成的的,而不是手动维护的。所以可以在实体类中的Id字段上加上注解@TableId(type = IdType.策略),表示字段的生成策略。

2.2、IdType.策略有ASSIGN_ID策略、ASSIGN_UUID策略、INPUT策略、AUTO策略

2.2.1 ASSIGN_ID策略

可以在分布式的情况下使用,生成的是Long类型的数字,可以排序性能也高,但是生成的策略和服务器时间有关,如果修改了系统时间就有可能导致出现重复主键。所以实体类的字段类型是Long类型的,否则会抛异常。

2.2.2 ASSIGN_UUID策略

可以在分布式的情况下使用,而且能够保证唯一,但是生成的主键是32位的字符串,长度过长占用空间而且还不能排序,查询性能也慢。

2.2.3 AUTO策略

数据库ID自增,这种策略适合在数据库服务器只有1台的情况下使用,不可作为分布式ID使用

2.2.4 INPUT

不设置id生成策略,MP不自动生成,约等于NONE,所以这两种方式都需要用户手动设置,但是手动设置第一个问题是容易出现相同的ID造成主键冲突,为了保证主键不冲突就需要做很多判定,实现起来比较复杂

2.3、主键生成策略统一配置

如果要在项目中的每一个模型类上都需要使用相同的生成策略,稍微比较繁琐,我们可以在配置文件中添加内容来使用统一的配置:

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

配置完成之后,每个模型的注解ID策略都将成为assign_id

2.4 新增

Employee employee = new Employee();
employee.setLastName("zhangsan");
employee.setGender(1);
employee.setEmail("zhangsan@qq.com");
employeeMapper.insert(employee);

三、修改

Employee employee = new Employee();
employee.setId(13L);
employee.setLastName("王五");
employee.setEmail("wangwu@qq.com");
employee.setGender(1);
employeeMapper.updateById(employee);

四、自动填充功能

比如创建时间,修改时间等字段,都和当前时间有关系,可以通过set方法设置字段的值。但是也可以通过mybatis-plus提供的自动填充的功能设置字段的值。其步骤如下:

第一步:在实体类需要填充的字段上加注解@TableField(fill=)

@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

第二步:实现mybatis-plus提供的MetaObjectHandler接口

1. 新建handler包,在handler包下创建类MyMetaObjectHandler implements  MetaObjectHandler,并由spring管理,添加@Component注解

2. 类中重载insertFill,updateFill方法。新增的时候会执行insertFill()方法,修改时会执行updateFill()方法。

@Component
public class MyMetaObjectHandler implements MetaObjectHandler 
    @Override
    public void insertFill(MetaObject metaObject) 
        //setFieldValByName:参数1:字段名,参数2:赋值,参数3:metaObject
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
    

    @Override
    public void updateFill(MetaObject metaObject) 
        this.setFieldValByName("updateTime",new Date(),metaObject);
    

mybatis-plus的批量新增insertbatchsomecolumn(代码片段)

MyBatis-Plus是基于MyBatis进行封装的一套优秀的持久层框架,它提供了丰富的便捷操作方法和强大的代码生成器,大大简化了MyBatis的使用。在MyBatis-Plus中,我们可以使用insertBatchSomeColumn方法来实现批量新增指定字段的操... 查看详情

mybatis-plus的扩展功能(代码片段)

..._modify(修改时间)这两个字段所有的表都要有而且自动填充Mybatis-plus中为我们提供了自动填充的扩展功能一、字段上加入注解//字段添加填充内容@TableField(fill=FieldFill.INSERT)privateDat 查看详情

新增修改校验逻辑使用-validation-的group分组校验完成

一、业务场景一般在项目开发中少不了新增、修改操作,这两个操作中传递的参数中也仅仅只有一个参数是不一致的,新增操作时没有ID,修改时有ID,其校验逻辑也只有这一个ID校验的差别。最开始自己在写代码时,按照项目中... 查看详情

02-mybatis-plus更新操作&自动填充&乐观锁(代码片段)

更新操作同样我们直接调用mp提供的updateById进行更新操作,我们需要提供主键作为条件,当然我们也可以使用QueryWraper进行构造条件进行更新//修改@TestpublicvoidtestUpdate()Useruser=newUser();user.setId(1340868235401764865L);user.setNa... 查看详情

mybatis-plus操作json字段(代码片段)

mybatis-plus操作json字段1.演示表格准备2.SQL操作JSON2.1.精确查询2.2.模糊查询3.mybatis-plus中操作JSON字段3.1自带方法的JSON处理3.2QueryWrapper查询的JSON处理3.3自定义SQL操作1.演示表格准备demo表CREATETABLE`demo`(`id`bigintNOTNULLAUTO_INCR 查看详情

mybatis-plus操作json字段(代码片段)

mybatis-plus操作json字段1.演示表格准备2.SQL操作JSON2.1.精确查询2.2.模糊查询3.mybatis-plus中操作JSON字段3.1自带方法的JSON处理3.2QueryWrapper查询的JSON处理3.3自定义SQL操作1.演示表格准备demo表CREATETABLE`demo`(`id`bigintNOTNULLAUTO_INCR 查看详情

mybatis-plus:通用crud操作(代码片段)

Mybatis-Plus通⽤CRUD通过继承BaseMapper来获取到各种各样的单表操作,下面通过案例来演示这些操作。1、插⼊操作⽅法定义/***插⼊⼀条记录**@paramentity实体对象.*/intinsert(Tentity);测试⽤例@RunWith(SpringRunner.class)@SpringBootTestcl... 查看详情

mybatis-plus:通用crud操作(代码片段)

Mybatis-Plus通⽤CRUD通过继承BaseMapper来获取到各种各样的单表操作,下面通过案例来演示这些操作。1、插⼊操作⽅法定义/***插⼊⼀条记录**@paramentity实体对象.*/intinsert(Tentity);测试⽤例@RunWith(SpringRunner.class)@SpringBootTestcl... 查看详情

elasticsearch在javaapi中的操作(入门)(代码片段)

目录2.2.5JavaAPI操作(1)环境准备&创建ES客户端(2)ES索引创建(3)ES索引&查询&删除(4)文档新增&修改新增修改数据(5)文档的批量新增&批量删除批量新增批量删除(6)高级查询&全量查询全量查询(7)高级查询&分页查询&... 查看详情

mybatis-plus(黑马程序员——p40~p62)(代码片段)

1、ActiveRecord1.1、开启AR之旅在MP中,开启AR非常简单,只需要将实体对象继承Model即可。1.2、根据主键查询注:需要配置UserMapper1.3、新增数据1.4、更新操作1.5、删除操作1.6、根据条件查询2、插件2.1、mybatis的插件机制... 查看详情

djongo操作mongodb新增字段(代码片段)

Djongo操作MongoDB新增字段摘要:Djongo作为Django的扩展,支持Django原生语法操作MongoDB。但是我现在有一个需求,那就是能够在不修改models.py的情况下,对模型类的对象新增一个字段并赋值,同时,其他的数据... 查看详情

djongo操作mongodb新增字段(代码片段)

Djongo操作MongoDB新增字段摘要:Djongo作为Django的扩展,支持Django原生语法操作MongoDB。但是我现在有一个需求,那就是能够在不修改models.py的情况下,对模型类的对象新增一个字段并赋值,同时,其他的数据... 查看详情

mybatis-plus工具学习笔记---[常用注解,条件构造器,插件使用](代码片段)

...件案例2.11LambdaQueryWrapper案例2.12LambdaUpdateWrapper使用案例3.Mybatis-Plus分页插件分页数据获取自定义分页功能4.乐观锁悲观锁模拟修改冲突乐观锁插件5.通用枚举6代码生成器7.mybatis-X插件生成代码近期也是计划学习mybatis-plus,扩展知识;... 查看详情

mybatis-plus:逻辑删除(@tablelogic将数据标记为删除,而并非真正的物理删除(非delete操作))(代码片段)

本节案例承接上节案例文章目录1.逻辑删除1.1修改表结构1.2配置删除状态和未删除状态的值1.3测试1.3.1先逻辑删除id为3的数据1.3.2现在查询所有数据2.说明1.逻辑删除开发系统时,有时候在实现功能时,删除操作需要实现逻... 查看详情

git放弃修改操作放弃增加文件操作(代码片段)

...不会删除! 所有文件和文件夹:gitclean-xdff[谨慎操作]本命令删除新增的文件和文件夹,如果文件已经已经gitadd到暂存区,并不会删除!3.本地修改/新增了一些文件,已经gitadd到暂存区,想放弃修改单... 查看详情

springboot集成mybatis-plus——mybatisplus新增数据并返回主键id(图文讲解)(代码片段)

MybatisPlus新增数据并返回主键ID(图文讲解) 更新时间2023-01-1015:37:37大家好,我是小哈。本小节中,我们将学习如何通过MybatisPlus框架给数据库表新增数据,主要内容思维导图如下:MybatisPlus新增数据思维导图表结构... 查看详情

有关mybatis-plus的插件机制(代码片段)

插件机制1.自动填充1.1原理1.2基本操作2.乐观锁2.1什么是乐观锁2.2.实现2.3注意事项3逻辑删除3.1什么是逻辑删除3.2实现3.3全局配置1.自动填充项目中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的创建时间&#x... 查看详情

mybatis-plus实现数据库curd操作(代码片段)

...物理删除和逻辑删除逻辑删除6、条件构造器和常用接口MyBatis-Plus实现数据库curd操作mp是什么MyBatis-Plus(简称MP)是一个MyBatis的 查看详情