SpringBoot项目MybatisPlus中时间的自动填充
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中时间的自动填充相关推荐
- 【MyBatis-Plus】实现字段自动填充功能
一.前言 在项目中,我们有一些公共的字段需要做修改 如: gmt_create:创建时间 creator_id:创建人 gmt_modified:修改时间 modifier_id:修改人 这时候我们可 ...
- 关于MybatisPlus使用Generator自动生成代码的实现(包含创建时间和更新时间的自动填充)
基于springboot的基础上添加以下依赖 <dependency><groupId>com.baomidou</groupId><artifactId&g ...
- MyBatis-Plus 扩展篇 > 自动填充功能
目标: 懂得实现 Mybatis-Plus的自动填充 实现步骤: 1.新建一个handle类 实现元对象处理器接口 2.实体类属性上 添加对应的注解(注解填充字段 @TableField) 一.如何理 ...
- 【Java开发】 Mybatis-Plus 02:Mapper-CRUD+自动填充+乐观锁
今天正好学习了Mybatis-Plus Mapper的Insert.Update 及自动填充功能的使用,特来和大家分享一下,需要注意的是我用的Mybatis-Plus版本是3.5.2,基础配置可见01 ...
- SpringBoot项目与maven分环境自动打包配置
打jar包 springboot项目分环境打包 打jar包 如果为多模块项目,比如我下面目录结构 其中api工程配置目录如下 1 首先在顶层工程中配置pom文件添加如下配置 <!--定义打包命令 ...
- python自动填写excel_Python:根据前面单元格中的公式自动填充Excel中的单元格
使用Python和win32com: 我在Excel文件中有一个公式,在单元格A5:A54.我试着用同样公式的值填充A55:A61单元格.我在网上搜索发现: http://pythonexcels.c ...
- 去掉chrome浏览器中input被自动填充后的背景色
chrome浏览器中,输入框如果被自动填充内容了,那么输入框也会被浏览器自动填充一个背景色,我电脑上填充的是蓝色,在网上有查到有填充黄色的,但不管是什么颜色的,实际表现是chrome给我们自动填充的i ...
- 关于Springboot项目页面中css,js文件加载失败的问题
记录一个刚开始接触Springboot时踩到的小坑.问题如下: 正在写一个登录功能,页面套用了bootstrap的模板,用浏览器打开页面有样式,但是整个项目跑起来的时候跳转的页面就会丢失样式,浏览器控 ...
- springboot整合mybatisplus中@Mapper与@MapperScan的使用
一.@Mapper与@MapperScan不可同时使用 二.@Mapper用于注解单个mapper接口 三.@Mapper Scan用于批量注解Mapper接口 四.@Mapper不起作用时,因为缺少 ...
最新文章
- Deleted表用于存储DELETE和UPDATE语句所影响的行的复本
- 用脚本批量执行redis命令
- (剑指Offer)面试题1:赋值运算符函数
- 2019河南对口高职高专计算机,2019年河南普通高招最后一个批次 高职高专批正式投档...
- scrapy 解决Redirecting 301 302重定向问题
- 设计模式入门(策略模式)
- jquery表单验证
- 【转】医疗业务学习笔记--DICOM协议的基础内容!!!!!!!!!!
- 【LeetCode笔记】剑指Offer 37. 序列化二叉树(Java、二叉树、序列化、BFS、队列)
- 配置snmp_多种设备基于 SNMP 协议的敏感信息泄露漏洞数据分析报告
- webpack4.0各个击破(10)—— Integration篇
- C# CollectionBase,ICloneeable
- Interior-point methods(内点法)学习笔记
- Android开发中遇到的坑
- k8s iptable升级到ipvs
- 阿里云添加DNS API 的accesskey
- 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记5:第三章 常用函数1——文件读写、算术平均值、最大值最小值、极值
- vue如何动态获取数据改变背景颜色和字体颜色以及获取图片
- Educational Codeforces Round 121 (Rated for Div. 2) unr场 A B C
- 华为 / 小米都看不惯,微信 iOS / 安卓 8.0.30 正式版终于修复转发文件多次保存问题
热门文章
- 高性能服务器性能影响因素
- 把Foxmail里的邮件导入到Office Outlook里
- [JAVA毕业设计]高校教学资源共享平台源码获取和系统演示
- 重磅综述|Nat Rev Gastroenterol Hepatol:人类胃肠道中的产甲烷古菌
- 工业物联网RTU与DTU的区别
- 图解:HTTP 范围请求,助力断点续传,多线程下载的核心原理 | 实用HTTP
- 无线局域网简介 小白级别
- Linux学习笔记2(root密码忘记重置,Linux系统更新yum源,YUM安装卸载,常见故障排除,vim,用户/组)
- html登陆后无法跳出页面,详解如何在登录过期后跳出Ifram框架
- vector sort 出现异常处理--std::sort(_RanIt,_RanIt,_Pr)