Mybatis代码生成器Mybatis-Generator使用详解( 六 )


useActualColumnNames
是否使用列名作为实体类的属性名
false
-
useColumnIndexes
XML映射文件中生成的ResultMap使用列索引定义而不是列名称
false
执行引擎为MyBatis3Kotlin或者MyBatis3DynamicSql的时候此属性忽略
useCompoundPropertyNames
是否把列名和列备注拼接起来生成实体类属性名
false
-
<table>标签还支持众多的非property的子标签:

  • 0或1个<generatedKey>用于指定主键生成的规则 , 指定此标签后会生成一个<selectKey>标签:
<!-- column:指定主键列 --><!-- sqlStatement:查询主键的SQL语句 , 例如填写了MySql , 则使用SELECT LAST_INSERT_ID() --><!-- type:可选值为pre或者post , pre指定selectKey标签的order为BEFORE , post指定selectKey标签的order为AFTER --><!-- identity:true的时候 , 指定selectKey标签的order为AFTER --><generatedKey column="id" sqlStatement="MySql" type="post" identity="true" />
  • 0或1个<domainObjectRenamingRule>用于指定实体类重命名规则:
<!-- searchString中正则命中的实体类名部分会替换为replaceString --><domainObjectRenamingRule searchString="^Sys" replaceString=""/><!-- 例如 SysUser会变成User --><!-- 例如 SysUserMapper会变成UserMapper -->
  • 0或1个<columnRenamingRule>用于指定列重命名规则:
<!-- searchString中正则命中的列名部分会替换为replaceString --><columnRenamingRule searchString="^CUST_" replaceString=""/><!-- 例如 CUST_BUSINESS_NAME会变成BUSINESS_NAME(useActualColumnNames=true) --><!-- 例如 CUST_BUSINESS_NAME会变成businessName(useActualColumnNames=false) -->
  • 0或N个<columnOverride>用于指定具体列的覆盖映射规则:
<!-- column:指定要覆盖配置的列 --><!-- property:指定要覆盖配置的属性 --><!-- delimitedColumnName:是否为列名添加定界符 , 例如`{column}` --><!-- isGeneratedAlways:是否一定生成此列 --><columnOverride column="customer_name" property="customerName" javaType="" jdbcType="" typeHandler="" delimitedColumnName="" isGeneratedAlways=""><!-- 覆盖table或者javaModelGenerator级别的trimStrings属性配置 --><property name="trimStrings" value=https://www.isolves.com/it/cxkf/kj/2021-08-12/"true"/>
  • 0或N个<ignoreColumn>用于指定忽略生成的列:
<ignoreColumn column="version" delimitedColumnName="false"/>实战如果需要深度定制一些代码生成行为 , 建议引入mybatis-generator-core并且通过编程式执行代码生成方法 , 否则可以选用Maven插件 。假设我们在本地数据local有一张t_order表如下:
CREATE TABLE `t_order`(idBIGINT UNSIGNED PRIMARY KEY COMMENT '主键',order_idVARCHAR(64)NOT NULL COMMENT '订单ID',create_timeDATETIMENOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',amountDECIMAL(10, 2) NOT NULL DEFAULT 0 COMMENT '金额',order_status TINYINTNOT NULL DEFAULT 0 COMMENT '订单状态',UNIQUE uniq_order_id (`order_id`)) COMMENT '订单表';假设项目的结构如下:
mbg-sample- main- java- club- throwable- resources下面会基于此前提举三个例子 。编写基础的XML配置文件:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><!-- 驱动包绝对路径 --><classPathEntrylocation="I:DevelopMaven-Repositorymysqlmysql-connector-java5.1.48mysql-connector-java-5.1.48.jar"/><context id="default" targetRuntime="这里选择合适的引擎"><property name="javaFileEncoding" value=https://www.isolves.com/it/cxkf/kj/2021-08-12/"UTF-8"/>


推荐阅读