Mybatis代码生成器

您所在的位置:网站首页 generator意思 Mybatis代码生成器

Mybatis代码生成器

2023-12-26 20:04| 来源: 网络整理| 查看: 265

前提

最近在做创业项目的时候因为有比较多的新需求,需要频繁基于DDL生成Mybatis适合的实体、Mapper接口和映射文件。其中,代码生成器是MyBatis Generator(MBG),用到了Mybatis-Generator-Core相关依赖,这里通过一篇文章详细地分析这个代码生成器的使用方式。本文编写的时候使用的Mybatis-Generator版本为1.4.0,其他版本没有进行过调研。

引入插件

Mybatis-Generator的运行方式有很多种:

基于mybatis-generator-core-x.x.x.jar和其XML配置文件,通过命令行运行。 通过Ant的Task结合其XML配置文件运行。 通过Maven插件运行。 通过Java代码和其XML配置文件运行。 通过Java代码和编程式配置运行。 通过Eclipse Feature运行。

这里只介绍通过Maven插件运行和通过Java代码和其XML配置文件运行这两种方式,两种方式有个特点:都要提前编写好XML配置文件。个人感觉XML配置文件相对直观,后文会花大量篇幅去说明XML配置文件中的配置项及其作用。这里先注意一点:默认的配置文件为ClassPath:generatorConfig.xml。

通过编码和配置文件运行

通过编码方式去运行插件先需要引入mybatis-generator-core依赖,编写本文的时候最新的版本为:

org.mybatis.generator mybatis-generator-core 1.4.0

假设编写好的XML配置文件是ClassPath下的generator-configuration.xml,那么使用代码生成器的编码方式大致如下:

List warnings = new ArrayList(); // 如果已经存在生成过的文件是否进行覆盖 boolean overwrite = true; File configFile = new File("ClassPath路径/generator-configuration.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator generator = new MyBatisGenerator(config, callback, warnings); generator.generate(null); 通过Maven插件运行

如果使用Maven插件,那么不需要引入mybatis-generator-core依赖,只需要引入一个Maven的插件mybatis-generator-maven-plugin:

org.mybatis.generator mybatis-generator-maven-plugin 1.4.0 Generate MyBatis Artifacts generate true true ${basedir}/src/main/resources/generator-configuration.xml

mybatis-generator-maven-plugin的更详细配置和可选参数可以参考:Running With Maven。插件配置完毕之后,使用下面的命令即可运行:

mvn mybatis-generator:generate XML配置文件详解

XML配置文件才是Mybatis-Generator的核心,它用于控制代码生成的所有行为。所有非标签独有的公共配置的Key可以在mybatis-generator-core的PropertyRegistry类中找到。下面是一个相对完整的配置文件的模板:

配置文件中,最外层的标签为,它的子标签包括:

0或者1个标签,用于指定全局配置文件,下面可以通过占位符的形式读取指定文件中的值。 0或者N个标签,只有一个location属性,用于指定数据源驱动包(jar或者zip)的绝对路径,具体选择什么驱动包取决于连接什么类型的数据源。 1或者N个标签,用于运行时的解析模式和具体的代码生成行为,所以这个标签里面的配置是最重要的。

下面分别列举和分析一下标签和它的主要子标签的一些属性配置和功能。

context标签

标签在mybatis-generator-core中对应的实现类为org.mybatis.generator.config.Context,它除了大量的子标签配置之外,比较主要的属性是:

id:Context示例的唯一ID,用于输出错误信息时候作为唯一标记。 targetRuntime:用于执行代码生成模式。 defaultModelType:控制Domain类的生成行为。执行引擎为MyBatis3DynamicSql或者MyBatis3Kotlin时忽略此配置,可选值: conditional:默认值,类似hierarchical,但是只有一个主键的时候会合并所有属性生成在同一个类。 flat:所有内容全部生成在一个对象中。 hierarchical:键生成一个XXKey对象,Blob等单独生成一个对象,其他简单属性在一个对象中。

targetRuntime属性的可选值比较多,这里做个简单的小结:

属性 功能描述 MyBatis3DynamicSql 默认值,兼容JDK8+和MyBatis 3.4.2+,不会生成XML映射文件,忽略的配置项,也就是Mapper全部注解化,依赖于MyBatis Dynamic SQL类库 MyBatis3Kotlin 行为类似于MyBatis3DynamicSql,不过兼容Kotlin的代码生成 MyBatis3 提供基本的基于动态SQL的CRUD方法和XXXByExample方法,会生成XML映射文件 MyBatis3Simple 提供基本的基于动态SQL的CRUD方法,会生成XML映射文件 MyBatis3DynamicSqlV1 已经过时,不推荐使用

笔者偏向于把SQL文件和代码分离,所以一般选用MyBatis3或者MyBatis3Simple。例如:

标签支持0或N个标签,的可选属性有:

property属性 功能描述 默认值 备注 autoDelimitKeywords 是否使用分隔符号括住数据库关键字 false 例如MySQL中会使用反引号括住关键字 beginningDelimiter 分隔符号的开始符号 "   endingDelimiter 分隔符号的结束号 "   javaFileEncoding 文件的编码 系统默认值 来源于java.nio.charset.Charset javaFormatter 类名和文件格式化器 DefaultJavaFormatter 见JavaFormatter和DefaultJavaFormatter targetJava8 是否JDK8和启动其特性 true   kotlinFileEncoding Kotlin文件编码 系统默认值 来源于java.nio.charset.Charset kotlinFormatter Kotlin类名和文件格式化器 DefaultKotlinFormatter 见KotlinFormatter和DefaultKotlinFormatter xmlFormatter XML文件格式化器 DefaultXmlFormatter 见XmlFormatter和DefaultXmlFormatter jdbcConnection标签

标签用于指定数据源的连接信息,它在mybatis-generator-core中对应的实现类为org.mybatis.generator.config.JDBCConnectionConfiguration,主要属性包括:

属性 功能描述 是否必须 driverClass 数据源驱动的全类名 Y connectionURL JDBC的连接URL


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3