项目技术点-MybatisPlus 实现自动填充 | 学习笔记

简介: 快速学习 项目技术点-MybatisPlus 实现自动填充

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)项目技术点-MybatisPlus 实现自动填充】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/667/detail/11271


项目技术点-MybatisPlus 实现自动填充


目录:

一.Mp实现修改操作

二.自动填充

三.测试


1. 修改年龄

(1)代码

//修改操作

@Test

public void updateUser()

User user = new User();

user.setId(2L);

user.setAge(120);

int row = userMapper.updateById(user);

System.out.println(row);

运行结果:

==>Preparing: UPDATE user SET age=? WHERE id=?

=> Parameters: 120(Integer), 2(Long)

<==

Updates:1ClosingnontransactionalSqlSession[org.apache.ibatis.session.defaults.DefaultSqlSession@7a8136b3]image.png

image.png

注:只会识别要修改的值,别的值保持不变

(2) updateby 语句 ==> Preparing:UPDATE user SET age=? WHERE id=?

==> Parameters:120(Integer),2(Long)

<== Updates:1ClosingnontransactionalSqlSession[org.apache.ibatis.session.defaults.DefaultSqlSession@7a8136b3]

2. 自动填充

含义:项目中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的创建时间,更新时间等。可以使用 MyBatis Plus 的自动填充功能,完成这些字段的赋值工作:

数据库表中添加自动填充字段

在 User 表中添加 datetime 类型的新的字段 create_ time、update_ time

(1)添加实体类属性

@Data

public class User (

@TableId(type=IdType.AUTO)

private Long id;

注://@TableId(type=IdType.ID_WORKER)//mp 自带策略,生成19位值,数字类型使用这种策略,比如 long

//@TableId(type=IdType.ID_WORKER_STR)//mp 自带策略,生成19位值,字符串类型使用这种策略

private Long id;private String name;private Integer age;private String email;

//create_ tjme

private Date createTime;

update_ time

private Date updateTime;

//添加操作

Test

public void addUser0 f

User user = new User() ;

user. setName(' mary' ) ;

user. setAge (30) ;

user. setEmail(" lucy@qq. com' ) ;

int insert = userMapper. insert (user) ;System. out. println(" 'insert: +insert) ;

注:在代码中输入时用驼峰式写法,例 create_time为CreateTime

(2)手动设置时间

@Test

public void addUser();

User user = new User();

user.setName ('mary') :

user.setAge(30);

user.setEmail("lucy@qq.com");

user.setCreateTime (new Date0);

user. setUpdateTime (new Date());

(3)使用MP操作具体实现过程

注解填充字段@TableField(..fill-FieldFill.INSERT)生成器策略部分也可以配置!

public class User

//注意!这里需要标记为填充字段

@TableField(..fill = FieldF ill. INSERT)private String fillField;

自定义实现类 MyMetaObjectHandler

@S1f4j

@Component

public class MyMet aObjectHandler implements Met a0bjectlandler@override

public void insertFill(MetaObject met a0bject)  

log.info("start insert fill...");this.strictInsertFill(metaObject,"createTime",LocalDateTime.class,LocalDateTimethis.fillStrategy(meta0bject,"createTime",LocalDateTime.now());

//*上面选其一使用,下面的已过时(注意 strictInsertF111有多个方法,详细查看源码)*/

//this.setFieldValByName("operator","Jerry",met.a0bject);

//this.setInsertFieldvalByName("operator","Jerry",metaObject);

goverride

public void updateFill(MetaObject met a0bject)

log.info("start update fill ...");

this.strictUpdateFill(metaobject,"updateTime",LocalDateTime.class,LocalDateTime

this.fillStrategy(meta0bject,"updateTime",LocalDateTime.now());///*上面选其一使用,下面的已过时(注意 strictUpdateFill 有多个方法,详细查看源码) */

//this.setFieldValByName("operator","Tom",met a0bject) ;

//this.setUpdateF ieldValByName("operator","Tom", met a0bject);

① :在实体类里面进行自动填充属性添加注解

//create_ time

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

//update_ time

@TableField(fill=FieldFill.INSERT UPDATE)

private Date updateTime;

② :创建类,实现接口 Meta0bjectHandler 实现接口里面的方法

@Component

public class MyMeta0bjectHandler implements Meta0bje

ctHandler

//使用 mp 实现添加操作,这个方法执行

@0verride

public void insertFill (Meta0bject meta0bject)

this.setFieldValByName(fieldName:"createTime',new Date(),meta0bject)this.setFieldValByName(fieldName:"updateTime,new Date(),meta0bject);//使用 mp 实现修改操作,这个方法执行

@0verride

public void updateFill (Meta0bject meta0bject)(

this.setFieldValByName(fieldName:"updateTime",new Date(),meta0bject;

3.测试成功

① 添加操作(显示创建时间与更新时间)

② 修改操作(更新时间为当前时间)

相关文章
|
SQL Java 数据库连接
Mybatis拦截器实现公共字段填充
通过使用MyBatis拦截器,可以实现对公共字段的自动填充,简化代码,提高开发效率。拦截器通过拦截SQL操作,在插入和更新操作时自动填充公共字段,使得开发者不再需要手动设置这些字段。本文详细介绍了实现步骤,并通过示例代码展示了具体实现方法,希望能为您的开发工作提供实用的指导和帮助。
1065 13
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
2672 6
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
数据库
MyBatis-Plus如何自动填充数据表的创建时间和更新时间
MyBatis-Plus如何自动填充数据表的创建时间和更新时间
1159 1
|
SQL 存储 算法
Mybatis-Plus- CRUD接口-主键策略-自动填充和乐观锁-分页-逻辑删除-条件构造器和常用接口
Mybatis-Plus- CRUD接口-主键策略-自动填充和乐观锁-分页-逻辑删除-条件构造器和常用接口
409 0
Springboot集成mybatisplus的时间自动填充问题
Springboot集成mybatisplus的时间自动填充问题
|
Java 数据库连接 开发者
Mybatis Plus公共字段自动填充(MyMetaObjectHandler)
Mybatis Plus公共字段自动填充(MyMetaObjectHandler)
1419 0
|
安全 前端开发 Java
Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)3
Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)
424 0
|
Java 数据库连接 API
Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)2
Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)
290 0
|
存储 Java 数据库连接
Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)1
Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)
253 0
mybatis-plus自动填充
mybatis-plus自动填充
321 0