MyBatisGenerator

MyBatis Generator(MBG)是为MyBatis和iBATIS生成代码的工具。它可以生成
1、Java POJOs that match the table structure,即java Model。
2、MyBatis/iBATIS Compatible SQL Map XML Files.即SQLMapper文件。
3、A mapper interface that works with the MyBatis 3.x mapper infrastructure。即MyBatis3的DAO操作接口java。
   MBG工具有5种方式运行,1、命令行方式,2、ant方式,3、Maven方式,4、基于xml配置的java方式,5、基于java配置的java方式。
  
   我通过ant方式去实现了MBG,把操作的经验分享给大家。MBG有一个配置文件generatorConfig.xml。在里面设置连接数据库配置、javaModel、sqlMap、javaClient,table。
现在我大概说一下,配置内容。
  
<?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用于设置MBG的classPath,location可以等于只包含了数据库驱动的jar或zip路经 也可以是一个包含驱动的目录。它是一个可选的元素。 -->
	<classPathEntry location="c:/ojdbc14.jar" />
	<!-- targetRuntime代码生成目标,默认是MyBatis3,可以是Ibatis2Java2或者Ibatis2Java5 -->
	<context id="DB2Tables" targetRuntime="MyBatis3">
		<!-- 数据库连接属性,没什么好说 -->
		<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
			connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:ZFGJJ" userId="hr"
			password="hr">
		</jdbcConnection>
		<!-- 解决数字转换问题 -->
		<javaTypeResolver>
			<!-- 只有一个属于forceBigDecimals,默认false。如果字段精确超过0,生成BigDecimal 如果字段精确是0,总长度10-18生成Long; 
				如果字段精确是0,总长5-9生成Integer; 如果字段精确是0,总长小于5生成Short; 如果forceBigDecimals为true,统一生成BigDecimal -->
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>
		<!-- Model生成配置 targetPackage:生成包路径,可自己生成目录 targetProject:项目路经,我试过写成"\mybatis",但总是报找不到,不知原因。 
			我换成写绝对目录,行的通。 -->
		<javaModelGenerator targetPackage="test.model"
			targetProject="D:\Workspace\mylearn\mybatis\">
			<property name="enableSubPackages" value="true" />
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		<!-- sqlMap配置 重复配置,不再提示,下同 -->
		<sqlMapGenerator targetPackage="test.xml"
			targetProject="D:\Workspace\mylearn\mybatis\">
			<property name="enableSubPackages" value="true" />
		</sqlMapGenerator>
		<!-- DAO接口的生成 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="test.dao" targetProject="D:\Workspace\mylearn\mybatis\">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>
		<!-- table 数据库table的用户配置,用于配置哪些表需要。 domainObjectName:生成表前缀 -->
		<table schema="hr" tableName="countries" domainObjectName="Customer">
			<!-- 下面是不同数据库表特性 参见 mybatis-generator-core.**.jar 里面的 Database Specific 
				Information -->
			<property name="ignoreQualifiersAtRuntime" value="true" />
			<property name="runtimeTableName" value="FRED" />
			<!-- 主键生成 如果用了这个 generatedKey ,MBG将在sqlmpper.xml里生成一个 selectKey元素在用在<insert>元素里 。 -->
			<generatedKey column="COUNTRY_ID" sqlStatement="JDBC"
				identity="true" />
		</table>
	</context>
</generatorConfiguration>
  

   有了MBG的配置文件了,还要一个ant脚本。
<?xml version="1.0"?>

<project default="genfiles" basedir=".">
	<path id="build">
		<fileset dir="${basedir}\web\WEB-INF\lib">
			<include name="*.jar" />
		</fileset>
	</path>

	<property name="generated.source.dir" value="${basedir}" />

	<target name="genfiles" description="Generate the files">
		<taskdef name="mbgenerator" classname="org.mybatis.generator.ant.GeneratorAntTask">
			<classpath refid="build" />
		</taskdef>
		<!--configfile:填你MBG文件名  -->
		<mbgenerator overwrite="true" configfile="generatorConfig.xml" verbose="false">
			<propertyset>
				<propertyref name="generated.source.dir" />
			</propertyset>
		</mbgenerator>
	</target>
</project>

ant的使用,这里就不用了。贴上生成的目录[img]

     用这个MBG工具,生成后的sqlmapping文件。里面的sql语句相当的多。但在实际使用中,不是每个表都用这到这么多的SQL,所以实际项目中,最好还是生成大量需要的SQL语句。这就要使用去学习MBG的源码了。自己做成一个适合自己项目的MBG的Eclipse plug-in是最好的办法。

  

猜你喜欢

转载自jw1314.iteye.com/blog/1178997
今日推荐