1:首先创建数据库

2:导入需要的依赖:

 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.21</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency></dependencies>

3:创建实体类

package com.dongmu.mybatisplus.pojo;import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {@TableId(type = IdType.AUTO)private Long id;private String name;private Integer age;private String email;@TableField(fill = FieldFill.INSERT)private Date create_time;@TableField(fill = FieldFill.UPDATE)private Date update_time;
}

4:创建mapper文件:

package com.dongmu.mybatisplus.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dongmu.mybatisplus.pojo.User;public interface UserMapper extends BaseMapper<User> {}

5:创建处理器类

package com.dongmu.mybatisplus.handler;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.util.Date;@Component
public class MymetaObjectHandler implements MetaObjectHandler {/*插入时候的填充策略*/@Overridepublic void insertFill(MetaObject metaObject) {this.setFieldValByName("create_time",new Date(),metaObject);
//        this.setFieldValByName("update_time",new Date(),metaObject);}/*更新时候的填充策略*/@Overridepublic void updateFill(MetaObject metaObject) {this.setFieldValByName("update_time",new Date(),metaObject);}
}

在启动类上加上注解扫描包

package com.dongmu;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.dongmu.mybatisplus.mapper")
public class MybatisPlusApplication {public static void main(String[] args) {SpringApplication.run(MybatisPlusApplication.class, args);}}

使用测试类进行测试

package com.dongmu;import com.dongmu.mybatisplus.mapper.UserMapper;
import com.dongmu.mybatisplus.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
class MybatisPlusApplicationTests {@Autowiredprivate UserMapper userMapper;@Testpublic void testSelect() {System.out.println(("----- selectAll method test ------"));List<User> userList = userMapper.selectList(null);
//        Assert.assertEquals(5, userList.size());userList.forEach(System.out::println);}@Testpublic void testInsert() {System.out.println(("----- Insert method test ------"));User user = new User();user.setName("冬木");user.setAge(3);user.setEmail("2645990605@qq.com");int insert = userMapper.insert(user);System.out.println("插入数据后受影响的行数:"+insert);}@Testpublic void testUpdate() {System.out.println(("----- Update method test ------"));User user = new User();user.setId(7L);user.setName("冬木");user.setAge(20);user.setEmail("2645990605@qq.com");int i = userMapper.updateById(user);System.out.println("插入数据后受影响的行数:"+i);}@Testvoid contextLoads() {}}

总结:其实就是创建一个处理器类实现MetaObjectHandler接口,实现里面的两个方法,然后就是要在实体类上需要的字段上面加上@TableField注解,为这个注解的属性fill赋值:见名知意。

public enum FieldFill {DEFAULT,INSERT,UPDATE,INSERT_UPDATE;private FieldFill() {}
}

一些其他的方法

/*按照多个字段进行条件查询*/@Testpublic void selectByFields(){Map<String,Object> map = new HashMap<>();map.put("name","北海2");map.put("age",21);List<User> users = userMapper.selectByMap(map);users.forEach(System.out::println);}==>  Preparing: SELECT id,name,age,email,version,create_time,update_time FROM user WHERE name = ? AND age = ?
==> Parameters: 北海2(String), 21(Integer)
<==    Columns: id, name, age, email, version, create_time, update_time
<==        Row: 7, 北海2, 21, 2645990605@qq.com, 4, 2022-02-21 18:11:17.0, 2022-02-21 20:30:41.0
<==      Total: 1

SpringBoot项目MybatisPlus中时间的自动填充相关推荐

  1. 【MyBatis-Plus】实现字段自动填充功能

    一.前言 在项目中,我们有一些公共的字段需要做修改 如: gmt_create:创建时间 creator_id:创建人 gmt_modified:修改时间 modifier_id:修改人 这时候我们可 ...

  2. 关于MybatisPlus使用Generator自动生成代码的实现(包含创建时间和更新时间的自动填充)

    基于springboot的基础上添加以下依赖 <dependency><groupId>com.baomidou</groupId><artifactId&g ...

  3. MyBatis-Plus 扩展篇 > 自动填充功能

    目标: 懂得实现 Mybatis-Plus的自动填充 实现步骤: 1.新建一个handle类 实现元对象处理器接口 2.实体类属性上 添加对应的注解(注解填充字段 @TableField) 一.如何理 ...

  4. 【Java开发】 Mybatis-Plus 02:Mapper-CRUD+自动填充+乐观锁

    今天正好学习了Mybatis-Plus Mapper的Insert.Update 及自动填充功能的使用,特来和大家分享一下,需要注意的是我用的Mybatis-Plus版本是3.5.2,基础配置可见01 ...

  5. SpringBoot项目与maven分环境自动打包配置

    打jar包 springboot项目分环境打包 打jar包 如果为多模块项目,比如我下面目录结构 其中api工程配置目录如下 1 首先在顶层工程中配置pom文件添加如下配置 <!--定义打包命令 ...

  6. python自动填写excel_Python:根据前面单元格中的公式自动填充Excel中的单元格

    使用Python和win32com: 我在Excel文件中有一个公式,在单元格A5:A54.我试着用同样公式的值填充A55:A61单元格.我在网上搜索发现: http://pythonexcels.c ...

  7. 去掉chrome浏览器中input被自动填充后的背景色

    chrome浏览器中,输入框如果被自动填充内容了,那么输入框也会被浏览器自动填充一个背景色,我电脑上填充的是蓝色,在网上有查到有填充黄色的,但不管是什么颜色的,实际表现是chrome给我们自动填充的i ...

  8. 关于Springboot项目页面中css,js文件加载失败的问题

    记录一个刚开始接触Springboot时踩到的小坑.问题如下: 正在写一个登录功能,页面套用了bootstrap的模板,用浏览器打开页面有样式,但是整个项目跑起来的时候跳转的页面就会丢失样式,浏览器控 ...

  9. springboot整合mybatisplus中@Mapper与@MapperScan的使用

    一.@Mapper与@MapperScan不可同时使用 二.@Mapper用于注解单个mapper接口 三.@Mapper Scan用于批量注解Mapper接口 四.@Mapper不起作用时,因为缺少 ...

最新文章

  1. Deleted表用于存储DELETE和UPDATE语句所影响的行的复本
  2. 用脚本批量执行redis命令
  3. (剑指Offer)面试题1:赋值运算符函数
  4. 2019河南对口高职高专计算机,2019年河南普通高招最后一个批次 高职高专批正式投档...
  5. scrapy 解决Redirecting 301 302重定向问题
  6. 设计模式入门(策略模式)
  7. jquery表单验证
  8. 【转】医疗业务学习笔记--DICOM协议的基础内容!!!!!!!!!!
  9. 【LeetCode笔记】剑指Offer 37. 序列化二叉树(Java、二叉树、序列化、BFS、队列)
  10. 配置snmp_多种设备基于 SNMP 协议的敏感信息泄露漏洞数据分析报告
  11. webpack4.0各个击破(10)—— Integration篇
  12. C# CollectionBase,ICloneeable
  13. Interior-point methods(内点法)学习笔记
  14. Android开发中遇到的坑
  15. k8s iptable升级到ipvs
  16. 阿里云添加DNS API 的accesskey
  17. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记5:第三章 常用函数1——文件读写、算术平均值、最大值最小值、极值
  18. vue如何动态获取数据改变背景颜色和字体颜色以及获取图片
  19. Educational Codeforces Round 121 (Rated for Div. 2) unr场 A B C
  20. 华为 / 小米都看不惯,微信 iOS / 安卓 8.0.30 正式版终于修复转发文件多次保存问题

热门文章

  1. 高性能服务器性能影响因素
  2. 把Foxmail里的邮件导入到Office Outlook里
  3. [JAVA毕业设计]高校教学资源共享平台源码获取和系统演示
  4. 重磅综述|Nat Rev Gastroenterol Hepatol:人类胃肠道中的产甲烷古菌
  5. 工业物联网RTU与DTU的区别
  6. 图解:HTTP 范围请求,助力断点续传,多线程下载的核心原理 | 实用HTTP
  7. 无线局域网简介 小白级别
  8. Linux学习笔记2(root密码忘记重置,Linux系统更新yum源,YUM安装卸载,常见故障排除,vim,用户/组)
  9. html登陆后无法跳出页面,详解如何在登录过期后跳出Ifram框架
  10. vector sort 出现异常处理--std::sort(_RanIt,_RanIt,_Pr)