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

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

  相关依赖:

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.2.2.RELEASE</version>
  5. </parent>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-web</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>com.baomidou</groupId>
  12. <artifactId>mybatis-plus-boot-starter</artifactId>
  13. <version>3.3.0</version>
  14. </dependency>

 实体类:

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

  1. package com.hl001.system.base.entity;
  2. import java.io.Serializable;
  3. import java.util.Date;
  4. import org.springframework.format.annotation.DateTimeFormat;
  5. import com.baomidou.mybatisplus.annotation.FieldFill;
  6. import com.baomidou.mybatisplus.annotation.TableField;
  7. import com.fasterxml.jackson.annotation.JsonFormat;
  8. import cn.afterturn.easypoi.excel.annotation.Excel;
  9. public class HEntity implements Serializable {
  10. private static final long serialVersionUID = 1L;
  11.  
  12. @TableField(value="crt_code",fill = FieldFill.INSERT)
  13. @Excel(name = "创建人编码", width = 15)
  14. private String crtCode;
  15.  
  16. @TableField(value="crt_name",fill = FieldFill.INSERT)
  17. @Excel(name = "创建人", width = 15)
  18. private String crtName;
  19.  
  20. @Excel(name = "创建时间", width = 15,format = "yyyy-MM-dd HH:mm:ss")
  21. @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
  22. @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  23. @TableField(value="crt_dt",fill = FieldFill.INSERT)
  24. private Date crtDt;
  25.  
  26. @TableField(value="proj_code",fill = FieldFill.INSERT)
  27. @Excel(name = "项目编码", width = 15)
  28. private String projCode;
  29.  
  30. @TableField(value="comp_code",fill = FieldFill.INSERT)
  31. @Excel(name = "公司编码", width = 15)
  32. private String compCode;
  33.  
  34. @TableField(value="org_code",fill = FieldFill.INSERT)
  35. @Excel(name = "组织机构码", width = 15)
  36. private String orgCode;
  37.    // 省略 getter setter 方法
  38. }

  注解解释:

  1.   @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 拦截器的配置

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

 单元测试 。。。。 省略

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

 

Mybatis-plus 实体类继承关系 插入默认值的更多相关文章

  1. PythonI/O进阶学习笔记_4.自定义序列类(序列基类继承关系/可切片对象/推导式)

    前言: 本文代码基于python3 Content: 1.python中的序列类分类 2. python序列中abc基类继承关系 3. 由list的extend等方法来看序列类的一些特定方法 4. l ...

  2. Idea查看接口或类继承关系

    打开想要查看的接口或者类文件,使用快捷键CTRL+H调出Hierarchy窗口 比如,想要查看Exception的类继承关系,首先定位到这个文件,然后调出Hierarchy窗口. 该窗口上面的一排工具 ...

  3. Mybatis中实体类属性与数据库列表间映射方法介绍

               这篇文章主要介绍了Mybatis中实体类属性与数据列表间映射方法介绍,一共四种方法方法,供大家参考.         Mybatis不像Hibernate中那么自动化,通过@Co ...

  4. Programming In Scala笔记-第十一章、Scala中的类继承关系

    本章主要从整体层面了解Scala中的类层级关系. 一.Scala的类层级 在Java中Object类是所有类的最终父类,其他所有类都直接或间接的继承了Object类.在Scala中所有类的最终父类为A ...

  5. EF中多表公共字段,以及设置EntityBase使所有实体类继承自定义类

    使用EF框架访问数据库时,如果某些表具有公共字段,例如在审核流程中,对于各类申请单资料的创建人.创建时间.修改人.修改时间,这些可能多表都需要的字段,如果在每个实体中进行赋值操作显然是类似和重复的,下 ...

  6. Unity类继承关系 图

    UnityEngine(命名空间) 其他命名空间 其他类 Object(类) 其他类(继承自Object) Component(类)(继承自Object) 其他类(继承自Component) Tran ...

  7. C# Wpf Shape类继承关系

    Path派生于Shape namespace System.Windows.Shapes { public sealed class Path : Shape { // Path 派生于Shape } ...

  8. c# 反射得到实体类的字段名称和值,DataTable转List<T>

    /// <summary> /// 反射得到实体类的字段名称和值 /// var dict = GetProperties(model); /// </summary> /// ...

  9. Mybatis 中实体类的编写

    一个实体类对应一个数据表 一个属性对应一个字段 默认情况下类名和属性名都采用 “下划线转驼峰” 的命名方式.但具体采用什么样的命名方式并不重要(方式一致即可),在后面使用这些对象的时候,可以通过 re ...

随机推荐

  1. php中 array_filter函数 的总结

    1.用此函数来过滤数组中的空元素 $arr1 = array('a'=>1,'b'=>0,'c'=>'','d'=>null,'e'=>5,'f'=>false); ...

  2. idea各种中文显示乱码解决大全

    本文链接:https://blog.csdn.net/liqimo1799/article/details/81811153中文乱码问题分类: 编码普通中文乱码properties文件中文乱码cons ...

  3. HDU 1596 也是最小路径Dijkstra

    #include<cstdio> #include<cmath> #include<cstring> +; double dist[qq]; double city ...

  4. 如何在SpringMVC项目中部署WebService服务并打包生成客户端

    场景 某SpringMVC项目原本为一个HTTP的WEB服务项目,之后想在该项目中添加WebService支持,使该项目同时提供HTTP服务和WebService服务.其中WebService服务通过 ...

  5. Netty进行文件传输

    本次是利用TCP在客户端发送文件流,服务端就接收流,写入相应的文件. 实验的源文件是一个图片,假设地址是D:\\Koala.jpg,接收保存后的图片为D:\\test.jpg 原理就是将文件读取成by ...

  6. Vue 用第三方的库去实现动画效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. H3C 显示OSPF的链路状态数据库

  8. redis_Cacha 爬虫链接redis配置文件

    import redisimport json class RedisCache(object): """ 使用redis进行爬虫结果的缓存,并可以进行增量爬取 &quo ...

  9. mysql导入文件出现Data truncated for column 'xxx' at row 1的原因

    mysql导入文件的时候很容易出现"Data truncated for column 'xxx' at row x",其中字符串里的xxx和x是指具体的列和行数. 有时候,这是因 ...

  10. H3C DHCP租约更新