- 年龄
*/
@TableField(condition = “%s<#{%s}”)
private Integer age;
/**
- 邮箱
*/
@TableField(“email”)
private String email;
/**
- 直属上级id
*/
private Long managerId;
/**
- 创建时间
*/
@TableField(fill = FieldFill.INSERT)//插入时填充
private Date createdTime;
/**
- 修改时间
*/
@TableField(fill = FieldFill.UPDATE)//修改时填充
private Date updateTime;
/**
- 版本
*/
private Integer version;
/**
- 0、未删除 1、已删除
*/
@TableLogic//逻辑删除标识
@TableField(select = false)//查询的时候不显示
private Integer deleted;
/** 备注 非数据库字段需要排除
-
方法一加入transient 不让该变量序列化 不推荐
-
方法二加入static 但是lombok不会生成get set方法需要自己手动添加 不推荐
-
方法三 @TableField(exist = false) 默认是true 改为false表示不是数据库字段 推荐
-
*/
@TableField(exist = false)
private /static/ /transient/ String remark;
}
工具类:
package com.hlvy.mybatis_plus.comporent;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Date;
/**
-
MetaObjectHandler
-
自动填充工具类
-
@author heng
-
@date 2019/9/14
**/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
private static final Logger LOGGER= LoggerFactory.getLogger(MyMetaObjectHandler.class);
@Override
public void insertFill(MetaObject metaObject) {
//是否存在set方法
boolean bol = metaObject.hasSetter(“createdTime”);
//拿到createdTime的值
Object createdTime = getFieldValByName(“createdTime”, metaObject);
//插入时填充创建时间 fieldName是属性名
LOGGER.info("insert 自动填充 "+ LocalDateTime.now());
// setInsertFieldValByName(“createTime”, LocalDateTime.now(),metaObject);
if(bol){//有set方法
if (createdTime == null) {//值为null填充
setFieldValByName(“createdTime”, new Date(), metaObject);
}
}
}
@Override
public void updateFill(MetaObject metaObject) {
//是否存在set方法
boolean bol = metaObject.hasSetter(“updateTime”);
//拿到updateTime的值
Object updateTime = getFieldValByName(“updateTime”, metaObject);
//修改时填充当前时间 fieldName是属性名
LOGGER.info("update 自动填充 "+ LocalDateTime.now());
//setUpdateFieldValByName(“updateTime”, LocalDateTime.now(),metaObject);
if (bol){//有set方法
if (updateTime == null) {//值为null填充
setFieldValByName(“updateTime”, new Date(), metaObject);
}
}
}
}
测试类
package com.hlvy.mybatis_plus.userTest;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hlvy.mybatis_plus.entity.User;
import com.hlvy.mybatis_plus.mapper.UserMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
/**
-
UserTestNew
-
mp进阶 自动填充
-
@author heng
-
@date 2019/4/11
**/
@RunWith(SpringRunner.class)
@SpringBootTest
public class FillUserTestNew {
@Autowired
private UserMapper userMapper;
/**
-
插入一行user 自动填充
-
sql INSERT INTO User ( id, name, age, email, created_time ) VALUES ( 1172866953920393218, ‘恒果果’, 19, ‘xxx@qq.com’, ‘2019-09-14 13:37:27.29’ )
*/
@Test
public void insertUser() {
System.out.println((“----- insertUser method test ------”));
User user = new User();
user.setName(“恒果果”);
user.setAge(19);
user.setEmail(“xxx@qq.com”);
int row = userMapper.insert(user);
System.out.println(“插入成功”+row+“行”);
}
/**
-
修改 自动填充
-
执行sql UPDATE User SET age=17, update_time=‘2019-09-14 13:26:30.305’ WHERE id=5 AND deleted=0
*/
@Test
public void updateOne() {
User user = new User();
user.setId(5L);
user.setAge(17);
System.out.println(userMapper.updateById(user));
}
}
pom文件
<?xml version="1.0" encoding="UTF-8"?><project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.4.RELEASE
com.hlvy
mybatis_plus
0.0.1-SNAPSHOT
mybatis_plus
Demo project for Spring Boot
<java.version>1.8</java.version>
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter
mysql
mysql-connector-java
runtime
com.baomidou
mybatis-plus-boot-starter
3.1.2
com.baomidou
mybatis-plus-generator
3.1.2
org.projectlombok
lombok
true
org.freemarker
freemarker
2.3.28
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
application.yml 文件
server:
port: 9091
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/mytest?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
#MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名,注册后在 Mapper 对应的 XML 文件中可以直接使用类名,而不用使用全限定的类名(即 XML 中调用的时候不用包含包名)。
type-aliases-package: com.hlvy.mybatis_plus.entity
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
厂,18年进入阿里一直到现在。**
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-PhXtNtEX-1715831163149)]
[外链图片转存中…(img-QWKi5qEU-1715831163149)]
[外链图片转存中…(img-h09U7Qvo-1715831163149)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!