MyBatis Generator(简称MBG)是MyBatis的代码生成器。
设计目标:
MBG用于内省数据库表,并将其生成可用于访问表的工件。MBG旨在对CRUD数据库操作进行自动化配置。MBG用来生成简单的实体类、映射文件。连接查询或存储过程等复杂操作还需要手动编写。
运行过程:
1.解析配置文件:generatorConfig.xml
2.连接数据库,获取表结构等信息
3.根据配置文件,将每个表对应的实体类、配置文件等自动生成到项目固定位置
运行方式:
可以以ANT、命令行、MAVEN等方式进行配置运行
本文以Maven运行方式进行配置。
MBG包含了一个用于集成到maven构建中的Maven插件(在maven项目的pom.xml文件中设置):
<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <!--配置文件路径--> <configurationFile>src/main/resources/generatorConfig.xml</configurationFile> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> <executions> <execution> <id>Generate MyBatis Artifacts</id> <goals> <goal>generate</goal> </goals> </execution> </executions> </plugin>
插件包含一个目标:
- mybatis-generator:generate
可以通过命令执行目标:
- mvn mybatis-generator:generate
generatorConfig.xml文件配置
执行generate构建目标的时候,首先会扫描:src/main/resources/generatorConfig.xml配置文件。
配置文件内容如下(示例):
<?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>
<!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包。因为MBG生成器需要首先连接并解析数据库表结构-->
<classPathEntry location="C:Userssh.m2 epositorycommicrosoftsqlservermssql-jdbc6.1.0.jre7mssql-jdbc-6.1.0.jre7.jar"/>
<!-- 上下文环境。 id:唯一标识、值会用于一些错误信息的提示。targetRuntime:mybatis版本代码(默认为:MyBatis3)-->
<context id="mssql2014Tables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否在注释中生成时间戳 true:是 : false:否 -->
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver" connectionURL="jdbc:sqlserver://172.16.0.218DEPSERVER;databaseName=DEP_218" userId="sa" password="dep@2014">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置 targetPackage:指定模型类的生成位置(即包名) targetProject:指定目标位置-->
<javaModelGenerator targetPackage="com.winning.spd.manager.model.surgery" targetProject="srcmainjava">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成映射文件的包名和位置 targetPackage:指定 targetProject:指定目标位置-->
<!-- sqlMapGenerator 为每个内省表构建一个MyBatis / iBATIS格式的SQL映射XML文件
如果iBATIS2被定向,则该元素是<context>元素的必需子元素。
如果MyBatis3被定向,那么只有当您选择的javaClientGenerator需要XML时,该元素才是<context>元素的必需子元素。
如果不指定javaClientGenerator,则应用以下规则:
如果您指定了sqlMapGenerator,那么MBG将仅生成SQL映射XML文件和模型类。
如果不指定sqlMapGenerator,那么MBG将仅生成模型类。 -->
<sqlMapGenerator targetPackage="main.resources.mapper.mssql" targetProject="src">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 定义客户端生成器属性。对于ibatis2,生成对象采用Dao接口和实现类。对于MyBatis,生成的对象采用映射器接口的形式 -->
<!-- type="XMLMAPPER" 表示:生成的对象将是MyBatis 3.x映射程序基础结构的Java接口。接口将依赖于生成的XML映射器文件。-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.winning.spd.manager.mapper" targetProject="srcmainjava">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<table tableName="Order_Surgery" domainObjectName="Surgery" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<property name="useActualColumnNames" value="true" />
</table>
</context>
</generatorConfiguration>
执行MBG,生成配置文件
执行 mvn mybatis-generator:generate 命令,若构建无误,则可以顺利生成模型类、映射接口和SQL映射XML文件