最近在利用mybatis generator生成Oracle数据库对应的实体类时发现一个问题,特此记录下。

因为项目使用到了swagger2,所以想在生成实体类时通过表注释和字段注释生成对应的@ApiMode和@ApiModelProperty等注解。但是发现没有效果,经过查看源码发现OracleDatabaseMetaData类会判断remarksReporting属性的值是否为true,当为ture时才会获取注释。故只用在jdbcConnection配置中多加一条属性

即可。

源码如下:

package org.mybatis.generator.api;

public class MyBatisGenerator {

public void generate(ProgressCallback callback, Set contextIds,

Set fullyQualifiedTableNames, boolean writeFiles) throws SQLException,

IOException, InterruptedException {

// 只关注关键代码,前面代码没有复制进来

for (Context context : contextsToRun) {

// 重要的是该方法

context.introspectTables(callback, warnings,

fullyQualifiedTableNames);

}

// 后面的方法逻辑忽略

}

}

package org.mybatis.generator.config;

public class Context extends PropertyHolder {

public void introspectTables(ProgressCallback callback,

List warnings, Set fullyQualifiedTableNames)

throws SQLException, InterruptedException {

// 前面的方法逻辑忽略 重要的是databaseIntrospector.introspectTables方法

List tables = databaseIntrospector.

.introspectTables(tc);

if (tables != null) {

introspectedTables.addAll(tables);

}

}

}

package org.mybatis.generator.internal.db;

public class DatabaseIntrospector {

public List introspectTables(TableConfiguration tc) {

// 前面的方法逻辑忽略 重要的是 calculateIntrospectedTables方法

List introspectedTables = calculateIntrospectedTables(

tc, columns);

}

private List calculateIntrospectedTables(

TableConfiguration tc,

Map> columns) {

// 前面的方法逻辑忽略 重要的是 enhanceIntrospectedTable方法

enhanceIntrospectedTable(introspectedTable);

}

private void enhanceIntrospectedTable(IntrospectedTable introspectedTable) {

// 前面的方法逻辑忽略 重要的是 databaseMetaData.getTables方法

ResultSet rs = databaseMetaData.getTables(fqt.getIntrospectedCatalog(), fqt.getIntrospectedSchema(),

}

}

package oracle.jdbc;

public class OracleDatabaseMetaData implements AdditionalDatabaseMetaData {

// 此处没有找到oralce的源码

public synchronized ResultSet getTables(String var1, String var2, String var3, String[] var4) throws SQLException {

String var6 = " c.comments AS remarks

";

String var7 = " NULL AS remarks

";

// 可以看到此处会判断remarksReporting的值是否为true,为true才有查原注释,否则会把null值当成注释

if (this.connection.getRemarksReporting()) {

var22 = var22 + var6 + var8;

} else {

var22 = var22 + var7 + var9;

}

}

}

mybatis oracle生成注释,MyBatis Generator生成Oracle数据库对应实体类时无法获取注释问题...相关推荐

  1. ogg oracle 测试kafka_利用ogg实现oracle到kafka的增量数据实时同步

    前言 ogg即Oracle GoldenGate是Oracle的同步工具,本文讲如何配置ogg以实现Oracle数据库增量数据实时同步到kafka中,其中同步消息格式为json. 下面是我的源端和目标 ...

  2. Mybatis(1)——Mybatis Generator自动生成代码

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML ...

  3. 解决表字段使用关键字导致Mybatis Generator生成代码异常的解决方案

    From: http://blog.itfsw.com/2017/05/23/jiejue-biao-ziduan-shiyong-guanjianzi-daozhi-mybatis-generato ...

  4. Mybatis自动生成代码插件generator

    Mybatis自动生成代码插件generator 1.pom maven依赖 <dependencies><dependency><groupId>org.myba ...

  5. IDEA中实现mybatis generator生成

    generatorConfig.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYP ...

  6. spring boot+mybatis+generator生成domain大小写问题

    之前遇到一个问题,用generator生成数据库对应的domain,以前都是好好的,那天突然生成的domain都是小写的,因为我数据库里是大写的,后来找到解决办法, <table tableNa ...

  7. mybatis根据表逆向自动化生成代码(自动生成实体类、mapper文件、mapper.xml文件)

    若采用mybatis框架,数据库新建表,手动编写的话,需要编写大量的实体类.mapper文件.mapper.xml文件,都是一些重复且有规律的工作. 我们可以引用插件,然后做配置,自动生成这些文件,提 ...

  8. ORM框架之Mybatis(五)mybatis生成器配置文件说明以及生成的类的说明

    一.XML配置详解 1.1 mybatis generator配置文件约束 <?xml version="1.0" encoding="UTF-8"?&g ...

  9. generator代码自动生成工具(动态生成注释、类注解、方法注解等)适用于swagger等需要配置实体类的场景

    generator代码生成器大家都不陌生,但是在实际的业务场景中,实体类只有属性.getter/setter方法不满足需求,还需要手动去添加需要的功能.比如项目使用swagger生成api文档时,需要 ...

最新文章

  1. nodejs生成多层目录和生成文件的通用方法
  2. docker设置固定ip地址
  3. 三、css 和 js 的装载与执行
  4. zookeeper单机安装
  5. [Usaco2010 Mar]gather 奶牛大集会
  6. java架构师进阶之独孤九剑:数据结构以及书籍推荐
  7. 1.1 Python 安装
  8. 产品经理必备利器:UML
  9. MVC PartialView视图使用心得
  10. python写出函数调用关系_函数递归调用: 调用者 与 被调用者之间的四种数据传递关系...
  11. Linux学习笔记1-在CentOS 7中安装配置JDK8
  12. ctrl+d与ctrl+c
  13. Mac OS 下安装wget
  14. ArcGIS Engine开发之旅01---产品组成、逻辑体系结构
  15. mysql 只显示箭头_为什么在DOS窗口中使用MySQL时,输入命令后只出现一个箭头,输入什么内容都是这样?...
  16. Android性能优化篇——友盟U-APM云真机
  17. 无监督图像分类《SCAN:Learning to Classify Images without》代码分析笔记(1):simclr
  18. 数据分析:你的城市复工了吗?
  19. Windows 文件夹修改为exe的原理和解决办法
  20. 怎么把PDF拆分开成一张一张的

热门文章

  1. 【Java并发】Runnable、Callable、Future、FutureTask
  2. UE4 VR中一种比较清晰的UI制作方式
  3. 《Cisco IOS XR技术精要》一2.7 高可用架
  4. 8086汇编语言实现8253计时器对时且实时定点显示时间(全注释)
  5. 今日问题:如果开发总是延迟提测时间,该怎么办呢?
  6. python网格搜索优化参数_python – 是否有可能通过网格搜索调整参数scikit-learn中的自定义内核?...
  7. member.php?mod=register文件在哪里,DEDECMS修改member会员中心文件夹名称 更改member目录名称...
  8. go语言打印errors类型变量
  9. 剑指offer面试题[9-2]-变态跳台阶
  10. 3种常见的渗透测试漏洞总结,快来收藏√