MyBatis Generator 常用配置记录说明

MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久型框架。它的使用简化了我们对数据库的操作,同事推荐这是后台操作数据库最方便的框架。

MyBatis Generator代码自动生成工具也给我们实现该框架提供了极大的便利,我们只需要经过简单的配置便可以生成想要的代码。

插件

MyBatis Generator插件已经比较成熟,MyEclipse中通过插件生成一个简单配置,我们只需要将信息补充完整,右键配置文件就能生成代码。

<?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>
  <context id="context1">
    <jdbcConnection connectionURL="???" driverClass="???" password="???" userId="???" />
    <javaModelGenerator targetPackage="???" targetProject="???" />
    <sqlMapGenerator targetPackage="???" targetProject="???" />
    <javaClientGenerator targetPackage="???" targetProject="???" type="XMLMAPPER" />
    <table schema="???" tableName="???">
      <columnOverride column="???" property="???" />
    </table>
  </context>
</generatorConfiguration>

MyBatis Generator配置说明

MyBatis Generator的配置属性节点相对较多,这里记录常用的一些配置。

generatorConfiguration:

配置主要内容,包含以下元素(有严格顺序):properties(0或1个),classPathEntry(0或多个),context(1或多个)

properties:

指定外部的属性元素,不是必须元素。

属性(不能同时使用):

resource:指定classpath下属性文件,例如根目录下的jdbc.properties;

url:指定文件系统上的属性文件,例如file:///C:/jdbc.properties;

classPathEntry:

加载其他用途的jar,仅用于JDBC数据库连接和加载跟类重点 javaModelGenerator检查重写方法时 

context:

用于指定生成一组对象的环境,至少需要一个

属性:

defaultModelType:conditional(默认,),flat(推荐,该模型为每张表生成一个实体类),hierarchical;

targetRuntime:MyBatis3(默认),MyBatis3Simple(不生成Example查询相关内容,可避免后面需要逐个配置<table>),Ibatis2Java2,Ibatis2Java5,一般使用默认;

jdbcConnection:

用于制定数据库连接信息,只能有一个,jdbc驱动不在classpath下,可通过classPathEntry导入,

属性:

driverClass:访问JDBC驱动程序的完全限定类名;

connectionURL:访问数据库JDBC的url;

userId:访问数据库的用户Id;

password:访问数据库的密码;

javaModelGenerator:

控制生成的实体类,必须配置一个,且只能有一个。

属性:

targetPackage:生成实体类的包名,受table影响;

targetProject:指定项目路径;

子元素:

constructorBased:只对MyBatis3有效,true为构造方法入参,false是setter方法入参,默认false;

enableSubPackages:true根据schema生成子包,false直接使用targetPackage,默认false;

trimStrings:对String类型字段在setter方法中调用trim()方法;

immutable:配置实体类是否可变,true时不管constructorBased设置成什么全用构造方法入参,并不会生成setter,false实体属性不能改变,默认false;

rootClass:设置所有实体类的基类,设置需要填基类的完全限定名称,若设置,在基类属性与父类属性名称一致、类型一致且有getter、setter方法情况下不替换属性;

sqlMapGenerator:

生成映射文件的包名和位置,可选配置,最多只能配置一个,但在以下情况必须配置:

1、targetRuntime为iBATIS2

2、targetRuntime为MyBatis3,且当javaClientGenerator需要XML时必须配置,如果没有配置javaClientGenerator时按照以下规则:

2.1、指定了一个sqlMapGenerator,至声称XML的SQL映射文件和实体类;

2.2、没有指定sqlMapGenerator,只生成实体类;

属性:

targetPackage:生成实体类包名,受table影响;

targetProject:指定目标项目路径;

enableSubPackages:true根据schema生成子包,false直接使用targetPackage,默认false;

javaClientGenerator:

生成DAO的包名和位置,可选配置,最多只能配置一个,不配置就不会生成Mapper接口。

属性:

type:必选,用于选择一个预定义的Mapper接口生成器,默认配置根据targetRuntime分成以下几类:

1、targetRuntime=MyBatis3:

ANNOTATEDMAPPER(基于注解的Mapper接口,不会有对应XML映射文件),

MIXEDMAPPER(XML和注解的混合形式,SqlProvider注解方法会被XML替换),

XMLMAPPER:所有方法都在XML中接口调用依赖XML文件,

2、targetRuntime=MyBatis3Simple:

ANNOTATEDMAPPER:基于注解的Mapper接口,不会有对应的XML映射文件,

XMLMAPPER:所有方法都在XML中接口调用依赖XML文件,

3、targetRuntime=Ibatis2Java2或Ibatis2Java5:

IBATIS:生成的对象符合iBATIS的DAO框架(不建议使用),

GENERIC-CI:生成的对象将只依赖于SqlMapClient,通过构造方法注入,

GENERIC-SI:生成的对象将只依赖于SqlMapClient,通过setter方法注入,

SPRING:生成的对象符合Spring的DAO接口,

targetPackage:必选,生成实体类包名,受table影响;

targetProject:必选,指定目标项目路径;

implementationPackage:可选,指定该属性,实现类生成在这个包中;

table:

用于配置要生成的表,至少配一个,可配置多个。

属性:

tableName:必选,指定要生成的表名,可使用SQL通配符匹配多张表(%:生成所有);

简单示例

<?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>
    <!-- 属性,指定classpath下的属性文件 -->
    <properties resource="jdbc.properties"/>
    <!-- 加载其他用途的jar -->
    <classPathEntry location="mysql-connector-java-5.1.24.jar"/>
    <!-- 用于指定生成一组对象的环境 -->
    <context id="context" defaultModelType="flat" targetRuntime="MyBatis3Simple">
    	<!-- 数据库配置 -->
    	<jdbcConnection driverClass="${db.driver}" connectionURL="${db.url}" userId="${db.username}" password="${db.password}"/>
    	<!-- 控制生成的实体类 -->
    	<javaModelGenerator targetPackage="com.sjl.mybatis.model" targetProject="MyBatis">
    		<property name="trimStrings" value="true"/>
    	</javaModelGenerator>
    	<!-- 生成映射文件 -->
    	<sqlMapGenerator targetPackage="sqlmap.auto" targetProject="MyBatis">
    	</sqlMapGenerator>
    	<!-- 生成DAO -->
    	<javaClientGenerator targetPackage="com.sjl.mybatis.dao" type="XMLMAPPER" targetProject="MyBatis">
    	</javaClientGenerator>
    	<!-- 要生成的表 -->
    	<table tableName="%"></table>
    </context>
</generatorConfiguration>


猜你喜欢

转载自blog.csdn.net/q1113225201/article/details/78493919
今日推荐