<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<classPathEntry
location="C:\Users\Zhu\.m2\repository\mysql\mysql-connector-java\5.1.6\mysql-connector-java-5.1.6.jar" />
<context id="MysqlTables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="false" />
<property name="suppressDate" value="false" />
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/easy_spring" userId="root"
password="123456">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<javaModelGenerator targetPackage="com.zhu.easyspring.entity"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.zhu.easyspring.dao"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.zhu.easyspring.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<table tableName="user" domainObjectName="User">
</table>
<table tableName="role" domainObjectName="Role">
</table>
<table tableName="permission" domainObjectName="Permission">
</table>
</context>
</generatorConfiguration>
首先贴上一份Mybatis Generator
的示例配置,心急的童鞋可以直接拿去用,有几个注意点需要改一下:
classPathEntry
:用于指定MyBatis Generator
(MBG
)运行的classpath
路径,MBG
在下面几种情况下会从这个路径来载入类:载入JDBC
驱动、载入JavaModelGenerator
的根类来检查重写的方法。必须要有localtion
属性,所以这里只需要将location
改成你本机的JDBC
驱动的jar包所在的目录即可。- 下一个需要修改的节点是
jdbcConnection
,这个就设置一下连接数据库的几个基本属性即可:URL
、username
、password
- 需要修改
javaModelGenerator
、sqlMapGenerator
、javaClientGenerator
,这三个节点是分别用来生成实体类+Example
类、Mapper
接口和映射文件的,这里只需要修改targetPackage
替换成你自己的即可 - 最后的话就是配置
table
节点来具体写出你需要生成实体的数据库表,这里关于table
节点的配置是相当多,这里就写几个我最近用到的一些:
<table tableName="t_address" domainObjectName="Address" modelType="flat" >
<columnOverride column="default" property="isDefault" delimitedColumnName="true"></columnOverride>
</table>
如上是对t_address
表来生成实体,其中table
节点的常用属性有:
tableName
指定了表名domainObjectName
指定了实体类的名称modelType
指定了生成实体的类型,这里modelType
总共分为三种:conditional
:类似hierarchical
,如果分离的类仅有一个属性那么就不分离了,比如某张表只有一个主键,那么就不会专门生成一个主键类,只会生成一个类flat
:一张表只会生成唯一的一个类,其中包含了所有的字段hierarchical
:如果表有主键的话,那么首先会生成一个主键类,另外还会生成一个所有BLOB
属性的类,最后还有一个类包含了余下的字段,并且这三个类会有一个合理的层次。
另外table
节点还可以包含子节点:
columnOverride
:重写某个字段的名字,比如数据中用到了某个java
的保留字,假设是class
,那么就必须重写该字段映射到实体类中的属性名,那么就可以这么写
<columnOverride column="class" property="cls"></columnOverride>
- 而对于数据库的保留字,比如某张表的字段名存在order,那么在生成sql的话,该字段order会被数据库认为是保留字order by的order,这时我们的做法通常是在该字段上加““符号,在用MGB生成时我们可以这么写
<columnOverride column="order" property="order" delimitedColumnName="true"></columnOverride>
delimitedColumnName这个属性就会告诉MGB在生成映射文件的时候会在该字段上加上分隔符,而对于分隔符的设置具体是在context
节点下,有这么两个属性:
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
这样基本上可以满足一般的需求了,如果还有额外的需求,请移步MBG官网的配置参考文档:
时间: 2024-11-05 10:07:58