项目技术点-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 XML Java
46 0
|
7月前
|
SQL XML Java
一、MyBatis简介:MyBatis历史、MyBatis特性、和其它持久化层技术对比、Mybatis下载依赖包流程
一、MyBatis简介:MyBatis历史、MyBatis特性、和其它持久化层技术对比、Mybatis下载依赖包流程
272 69
|
9月前
|
SQL Java 数据库连接
Mybatis拦截器实现公共字段填充
通过使用MyBatis拦截器,可以实现对公共字段的自动填充,简化代码,提高开发效率。拦截器通过拦截SQL操作,在插入和更新操作时自动填充公共字段,使得开发者不再需要手动设置这些字段。本文详细介绍了实现步骤,并通过示例代码展示了具体实现方法,希望能为您的开发工作提供实用的指导和帮助。
546 13
|
11月前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
1716 5
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
2673 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
281 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
SQL Java 关系型数据库
MyBatis-Plus 分页魅力绽放!紧跟技术热点,带你领略数据分页的高效与便捷
【8月更文挑战第29天】在 Java 开发中,数据处理至关重要,尤其在大量数据查询与展示时,分页功能尤为重要。MyBatis-Plus 作为一款强大的持久层框架,提供了便捷高效的分页解决方案。通过封装数据库分页查询语句,开发者能轻松实现分页功能。在实际应用中,只需创建 `Page` 对象并设置页码和每页条数,再通过 `QueryWrapper` 构建查询条件,调用 `selectPage` 方法即可完成分页查询。MyBatis-Plus 不仅生成分页 SQL 语句,还自动处理参数合法性检查,并支持条件查询和排序等功能,极大地提升了系统性能和稳定性。
403 0
|
Java 数据库连接 mybatis
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
这篇文章讨论了在已使用MyBatis的项目中引入MyBatis-Plus后出现的"Invalid bound statement (not found)"错误,并提供了解决方法,主要是通过修改yml配置文件来解决MyBatis和MyBatis-Plus共存时的冲突问题。
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
|
Java 关系型数据库 MySQL
1、Mybatis-Plus 创建SpringBoot项目
这篇文章是关于如何创建一个SpringBoot项目,包括在`pom.xml`文件中引入依赖、在`application.yml`文件中配置数据库连接,以及加入日志功能的详细步骤和示例代码。
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
1162 0