mybatis是非常流行的持久化框架,自动化虽然没有hibernate那么高,但是灵活性更高些,可以手动写一些执行效率较高的SQL语句。对于持久层dao还有sqlmap和entity(model)我们更希望关注在业务上而不是框架的书写规则上,因此,这次介绍这个generator工具就是提供了自动完成持久层的装配,我们只要定义好了表结构,利用xml文件配置一下,这个工具自动帮我们装配生成持久层相关的模块。
首先工具的结构是这样的。
src是可以自定义的。
genteratorConfig.xml 存放了相关的数据库的配置也要生成的目标路径和表还有具体的相关配置。还存在很多jar包,因为在连接数据库和生成过程中会使用到相关的工具会引用很多jar包,可以引用其他位置的jar包,此处都包含在此文件夹内便于管理。
首先我们的数据库建立了四张表:
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>
<!-- 这里需要引用jdbc jar包-->
<classPathEntry location="mysql-connector-java-5.1.25-bin.jar"/>
<context id="test" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否生成注释 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--这里是驱动 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/hq_db" userId="root" password="root">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 这里生成对应文件夹路径配置-->
<javaModelGenerator targetPackage="com.micro.entity" targetProject="src">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- sqlmap路径配置-->
<sqlMapGenerator targetPackage="com.micro.sqlmap" targetProject="src">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--dao接口的路径配置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.micro.dao" targetProject="src">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 分别配置对应的表名还可以配置是否生成example,默认是true-->
<table tableName="user" domainObjectName="User" ></table>
<table tableName="house" domainObjectName="House" ></table>
<table tableName="house_type" domainObjectName="HouseType" ></table>
<table tableName="region" domainObjectName="Region" ></table>
</context>
</generatorConfiguration>
配置完成,可能你还注意到了路径下还有个execute.bat。里面是cmd命令:
Java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite
cmd 在该路径下,然后执行该bat文件:
显示成功。打开对应目录(这里以entity目录为例):
其他文件也对应生成了配置好的模块。
2016/5/15补充:这个并没有对于分页给与支持,我们应该还要加上插件。jar里都有。因此不需要引入新的jar包。添加下面两个:
<plugin type="org.mybatis.generator.plugins.PaginationPlugin"/>
<plugin type="org.mybatis.generator.plugins.AutoIncIdPlugin"/>
完整的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>
<classPathEntry location="mysql-connector-java-5.1.25-bin.jar" />
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 这里声明插件 -->
<plugin type="org.mybatis.generator.plugins.PaginationPlugin" />
<plugin type="org.mybatis.generator.plugins.AutoIncIdPlugin" />
<commentGenerator>
<property name="suppressDate" value="true" />
<property name="suppressAllComments" value="true" />
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1/financial_system" userId="root"
password="root">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<javaModelGenerator targetPackage="com.platform.model"
targetProject="src">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.platform.sqlmap"
targetProject="src">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.platform.dao" targetProject="src">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<table tableName="user" domainObjectName="User"></table>
<table tableName="project" domainObjectName="Project"></table>
<table tableName="enterprise" domainObjectName="Enterprise"></table>
<table tableName="user_project_relation" domainObjectName="UserProjectRelation"></table>
<table tableName="enterprise_project_relation" domainObjectName="EnterpriseProjectRelation"></table>
</context>
</generatorConfiguration>
即可添加分页查询等功能的支持。
总结:我们主要做了两件事,第一就是建立好了数据库,第二就是配置了xml文件。然后执行脚本,自动生成持久层模块。大大降低了数据库java对象关系映射的重复工作。
注:博主资源里免积分提供generator工具。