Mybatis Generator是很好的工具帮助我们生成表映射关联代码,最近博主遇到一个问题,找了很久才解决,

就是用Mybatis Generator生成实体类的时候,Date 时间无法格式化输出,导致前端掉接口的时候格式不对,

解决方案如下,希望能帮助到需要的人:

给我启发的博客地址:https://blog.csdn.net/lchq1995/article/details/78417993

解决的关键是我们需要在实体类中加上如下注解,这样查询的时候日期会自动格式化

注意:我的表中updatedTime的jdbcType是timestamp类型的

问题是如何在生成代码时候自动加入这两个注解呢?

首先我们要自定义注释生成器,让他自动在实体类中加上注解 我的生成器代码如下(本人也是借鉴某位大神的写法):

import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.dom.java.CompilationUnit;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
import org.mybatis.generator.internal.DefaultCommentGenerator;
import org.mybatis.generator.internal.util.StringUtility; import java.util.Properties; /**
* 自定义注释生成器
*
*/
public class CommentGenerator extends DefaultCommentGenerator {
private boolean addRemarkComments = false;
private static final String EXAMPLE_SUFFIX="Example";
private static final String API_MODEL_PROPERTY_FULL_CLASS_NAME="io.swagger.annotations.ApiModelProperty";
private static final String API_JSON_SERIALIZE="com.fasterxml.jackson.databind.annotation.JsonSerialize";
private static final String API_JSON_DATE_SERIALIZER="com.chuanmian.common.util.JsonDateSerializer";
private static final String API_DATE_TIME_FORMAT="org.springframework.format.annotation.DateTimeFormat";
/**
* 设置用户配置的参数
*/
@Override
public void addConfigurationProperties(Properties properties) {
super.addConfigurationProperties(properties);
this.addRemarkComments = StringUtility.isTrue(properties.getProperty("addRemarkComments"));
} /**
* 给字段添加注释
*/
@Override
public void addFieldComment(Field field, IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
String remarks = introspectedColumn.getRemarks();
//根据参数和备注信息判断是否添加备注信息
if(addRemarkComments&&StringUtility.stringHasValue(remarks)){
// addFieldJavaDoc(field, remarks);
//数据库中特殊字符需要转义
if(remarks.contains("\"")){
remarks = remarks.replace("\"","'");
}
//给model的字段添加swagger注解
field.addJavaDocLine("@ApiModelProperty(value = \""+remarks+"\")"); // createdTime或者updatedTime时间格式化
if("createdTime".equals(field.getName()) || "updatedTime".equals(field.getName())) {
field.addJavaDocLine("@DateTimeFormat(pattern=\"yyyy-MM-dd HH:mm:ss\")");
field.addJavaDocLine("@JsonSerialize(using=JsonDateSerializer.class)");
}
}
} /**
* 给model的字段添加注释
*/
private void addFieldJavaDoc(Field field, String remarks) {
//文档注释开始
field.addJavaDocLine("/**");
//获取数据库字段的备注信息
String[] remarkLines = remarks.split(System.getProperty("line.separator"));
for(String remarkLine:remarkLines){
field.addJavaDocLine(" * "+remarkLine);
}
addJavadocTag(field, false);
field.addJavaDocLine(" */");
} @Override
public void addJavaFileComment(CompilationUnit compilationUnit) {
super.addJavaFileComment(compilationUnit);
//只在model中添加swagger注解类的导入
if(!compilationUnit.isJavaInterface()&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){
compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
compilationUnit.addImportedType(new FullyQualifiedJavaType(API_JSON_SERIALIZE));
compilationUnit.addImportedType(new FullyQualifiedJavaType(API_JSON_DATE_SERIALIZER));
compilationUnit.addImportedType(new FullyQualifiedJavaType(API_DATE_TIME_FORMAT));
}
}
}

  

以下代码就是在特定字段上加入格式化注解的

// createdTime或者updatedTime时间格式化
if("createdTime".equals(field.getName()) || "updatedTime".equals(field.getName())) {
field.addJavaDocLine("@DateTimeFormat(pattern=\"yyyy-MM-dd HH:mm:ss\")");
field.addJavaDocLine("@JsonSerialize(using=JsonDateSerializer.class)");
}

  

以下代码是在实体类顶部引入对应的包的

 compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
compilationUnit.addImportedType(new FullyQualifiedJavaType(API_JSON_SERIALIZE));
compilationUnit.addImportedType(new FullyQualifiedJavaType(API_JSON_DATE_SERIALIZER));
compilationUnit.addImportedType(new FullyQualifiedJavaType(API_DATE_TIME_FORMAT));

  

实体类我就不拷贝出来了,因为每个人情况不一样,大体就是注意以上两点。

附上Mybatis-generator 配置文件详解地址:https://www.jianshu.com/p/22ac0a58cecb

【记录】Mybatis Generator生成数据对象Date/TimeStamp 查询时间格式化的更多相关文章

  1. mybatis Generator生成代码及使用方式

    本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5889312.html 为什么要有mybatis mybatis 是一个 Java 的 ORM 框架,OR ...

  2. Mybaitis-generator生成数据对象和时间的优化

    1.本章涉及到知识点,Mybaitis-generator生成数据对象和时间,xml的引用*.properties 外部文件(在这之前必须导入了mybaitis的核心架包) A.在pom.xml的案例 ...

  3. mybatis-generator生成数据对象

    mybatis-generator生成数据对象 步骤一:在pom文件中添加build的插件 <build> <finalName>doudou</finalName> ...

  4. MyBatis Generator 生成的example 使用 and or 简单混合查询

    MyBatis Generator 生成的example 使用 and or 简单混合查询 参考博客:https://www.cnblogs.com/kangping/p/6001519.html 简 ...

  5. MyBatis Generator生成DAO——序列化

    MyBatis Generator生成DAO 的时候,生成的类都是没有序列化的. 还以为要手工加入(開始是手工加入的),今天遇到分页的问题,才发现生成的时候能够加入插件. 既然分页能够有插件.序列化是 ...

  6. Maven下用MyBatis Generator生成文件

    使用Maven命令用MyBatis Generator生成MyBatis的文件步骤如下: 1.在mop文件内添加plugin <build> <finalName>KenShr ...

  7. 利用org.mybatis.generator生成实体类

    springboot+maven+mybatis+mysql 利用org.mybatis.generator生成实体类 1.添加pom依赖:   2.编写generatorConfig.xml文件 ( ...

  8. Oracle date timestamp 毫秒 - 时间函数总结(转)

    原文地址:Oracle date timestamp 毫秒 - 时间函数总结 yyyy-mm-dd hh24:mi:ss.ff  年-月-日 时:分:秒.毫秒 --上一月,上一年select add_ ...

  9. MyBatis Generator 生成数据库自带中文注释

    1. maven依赖 <!-- mybatis生成 jar包 --> <dependency> <groupId>org.mybatis.generator< ...

随机推荐

  1. 一、表单和ajax中的post请求&&后台获取数据方法

    一.表单和ajax中的post请求&&后台获取数据方法 最近要做后台数据接收,因为前台传来的数据太过于混乱,所以总结了一下前台数据post请求方法,顺便写了下相对应的后台接收方法. 前 ...

  2. 一、Api

    一. private static readonly IList<string> BaseParamKey = new List<string>() { "apiId ...

  3. Linux修改密码指令

    1.在选择系统菜单界面,按 "e" 进入编辑模式 2.在以字符串“Linux16”开头的行,将光标移动到该行的结尾,然后输入“init=/bin/bash”,按 "Ctr ...

  4. Error- Overloaded method value createDirectStream in error Spark Streaming打包报错

    直接上代码 StreamingExamples.setStreamingLogLevels() val Array(brokers, topics) = args // Create context ...

  5. nodeJs express4 框架

    Express 4 框架 一.安装

  6. LeetCode(力扣)——Search in Rotated Sorted Array 搜索旋转排序数组 python实现

    题目描述: python实现 Search in Rotated Sorted Array 搜索旋转排序数组   中文:假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1 ...

  7. 百度MIP技术快速入门(上)

    前言 「本文假定读者已经有初级的前端开发知识,包括HTML.CSS.」 百度在一年前推出了称为 MIP(Mobile Instant Pages)的前端开发组件,主要目的是加速移动端网页的显示.MIP ...

  8. python实现简单接口

    接口实现 import flask,json server=flask.Flask(__name__)#__name__代表当前的python文件.把当前的python文件当做一个服务启动 @serv ...

  9. python之字符串切分

    在工作中,经常遇到字符串切分,尤其是操作linux命令,返回一段文本,如下面这种格式 Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G ...

  10. Vue的使用总结(2)

    1.Vue 中 class 和 style 的绑定 在 Vue 中,可以通过数据绑定来操作元素的 class 列表和内联样式,操作 class 和 style 是用 v-bind 来绑定的.在将 v- ...