在实际开发中,会定义一些公共字段,而这些公共字段,一般都是在进行操作的时候由程序自动将默认值插入。而公共的字段一般会被封装到一个基础的实体类中,同时实体类中会实现相应的getter setter 方法(注:如果使用了Lombok 插件,就没有getter setter方法,相关注解请自行了解),同时,会用到相关注解。在下文中会一一讲到。

  本文的技术选型为: springboot 2.2.2 + mybatis-plus 3, maven构建项目

  相关依赖:

 <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>

 实体类:

将公共字段封装到基类中,供其他业务实体类进行调用

package com.hl001.system.base.entity;
import java.io.Serializable;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import cn.afterturn.easypoi.excel.annotation.Excel;
public class HEntity implements Serializable {
private static final long serialVersionUID = 1L; @TableField(value="crt_code",fill = FieldFill.INSERT)
@Excel(name = "创建人编码", width = 15)
private String crtCode; @TableField(value="crt_name",fill = FieldFill.INSERT)
@Excel(name = "创建人", width = 15)
private String crtName; @Excel(name = "创建时间", width = 15,format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(value="crt_dt",fill = FieldFill.INSERT)
private Date crtDt; @TableField(value="proj_code",fill = FieldFill.INSERT)
@Excel(name = "项目编码", width = 15)
private String projCode; @TableField(value="comp_code",fill = FieldFill.INSERT)
@Excel(name = "公司编码", width = 15)
private String compCode; @TableField(value="org_code",fill = FieldFill.INSERT)
@Excel(name = "组织机构码", width = 15)
private String orgCode;
   // 省略 getter setter 方法
}

  注解解释:

  @TableField(value="crt_code",fill = FieldFill.INSERT): 该注解主要是Mybatis 插入默认值 value值为数据库表中的字段,file是用来指定策略的,可以新增时插入,也可以修改时插入
  @Excel(name = "创建人编码", width = 15) // 用于 Excel 导入导出(此处不做交多阐述)
  @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") // JSON 日期格式
  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")// 日期格式转换 

 业务类继承基础实体类进行共有字段扩展

  创建Mybatis plus 拦截器的配置

     /**
* 自动填充功能
* @return
*/
@Bean
public GlobalConfig globalConfig() {
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setMetaObjectHandler(new MetaHandler());
return globalConfig;
}
@Component
public class MetaHandler implements MetaObjectHandler { @Override
public void insertFill(MetaObject metaObject) { // 插入操作时,添加默认数据
SysUser user = ResourceUtil.getSessionUser();
        // 注意 第一个参数必须和实体类中的参数名一致,否则会报错
this.setFieldValByName("crtName", user.getRealname(), metaObject);
this.setFieldValByName("crtCode", user.getUsername(),metaObject);
this.setFieldValByName("crtDt", new Date(),metaObject);
this.setFieldValByName("projCode","ss" ,metaObject);
this.setFieldValByName("orgCode", "ssss",metaObject);
this.setFieldValByName("compCode", "来了老弟",metaObject);
} @Override
public void updateFill(MetaObject metaObject) {// 更新操作时 添加默认数据
// TODO Auto-generated method stub }

 单元测试 。。。。 省略

 至此 Mybatis-plus 的默认值插入就已经完成了。

 

最新文章

  1. 深入理解IOC模式及Unity框架
  2. pct xcode7
  3. Hibernate和jsp做数据库单表的增删改查
  4. 解决 LINUX mysql不能通过IP连接 只能localhost 权限没问题情况下
  5. Microsoft.DirectX.DirectSound学习(一)
  6. myeclipse配置weblogicserver
  7. Extjs4中的store
  8. python基础-------模块与包(四)
  9. Spring Security入门(3-3)Spring Security 手工配置并注入 authenticationProvider 和 异常信息传递
  10. 【TensorFlow 官网 可以直接访问】让中国开发者更容易地使用TensorFlow打造人工智能应用
  11. 《java入门第一季》之tcp协议下的网络编程
  12. SpringMVC中日期格式的转换
  13. LeetCode-876 链表的中间结点
  14. Docker网络和容器的通信
  15. git和github新手快速操作流程
  16. 你会跟谁结婚zz
  17. Linux学习笔记14—文件的压缩与打包
  18. Jmeter(二十五)常见问题(转载)
  19. xml约束的概念
  20. jmeter 多线程组间变量共享

热门文章

  1. oracle 识别’低效执行’的SQL语句
  2. 【CSS3】分类豆腐块菜单浮动效果
  3. H3C MAC地址
  4. HDU 1251 裸的字典树、入门题
  5. 2018-2-13-WPF-DelegateCommand-出现Specified-cast-is-not-valid
  6. Xshell + SVN使用
  7. 【React】 百度地图API
  8. Ubuntu Kylin 14.04安装
  9. 高并发下载tomcat下的文件时,发生java.net.SocketException: Connection reset解决方案
  10. mysql去重, 把url重复且区为空的中去掉、统计重复数据、、结果集去重合并成一行