使用ssm框架开发,不免被一堆xml文件和接口的编写而感到厌烦,mybatis generator这个插件可以帮你从繁琐接口和xml编写中解放出来.
- 准备工作
除mybatis包以外,需要以下jar包:
a.ojdbc6.jar(MySql数据库替换为MySql的驱动)
b.mybatis-generator-core.jar
c.tk.mybatis.mapper.jar
1.pom文件中添加插件
在<build>中添加<plugins>管理插件:
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<!--generator 工具配置文件的位置-->generatorConfig.xml
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<!--允许移动生成的文件-->
<verbose>true</verbose>
<!--允许覆盖生成的文件-->
<overwrite>true</overwrite>
</configuration>
<dependencies>
<!--数据库驱动-->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.4</version>
</dependency>
</dependencies>
</plugin>
</plugins>
2.配置generator 工具配置文件–>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>
<!--执行generator插件生成文件的命令:call mvn mybatis-generator:generate -e -->
<!--引入配置文件-->
<properties resource="mybatisGeneratorinit.properties"></properties>
<!-- 由于在pom.xml中加入插件时已经配置数据库驱动包,所以此处不必配置了-->
<!-- <classPathEntry location="D:\generator\mysql-connector-java-5.1.34.jar" 数据库的jdbc驱动 可选/> -->
<!--<classPathEntry location="E:\Database\Oracle\jdbc\lib\ojdbc14.jar" />-->
<!--一个数据库一个context-->
<!--defaultModelType:指定生成对象的样式
1,conditional:默认值 与hierachical模型相似,如果一个实体类只包含一个实体类,则不会单独生成此实体类,
如果一个表的主键只有一个实体类,会将这个字段合并到基本实体类中;
2,flat:所有内容(主键,blob)等全部生成在一个对象中,一张表一个实体类;
3,hierarchical:主键生成一个XXKey对象(key class,主键类),Blob等单独生成一个对象(大字段类),其他简单属性在一个对象中(record class)-->
<!--targetRuntime:
1,MyBatis3:默认的值,生成基于MyBatis3.x以上版本的内容,包括XXXBySample;
2,MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample;
introspectedColumnImpl:类全限定名,用于扩展MBG-->
<context id="Mytables" targetRuntime="MyBatis3Simple" defaultModelType="conditional">
<!--自动识别关键字,默认false,如果设置为true,根据SqlReservedWords中定义的关键字列表
一般保留默认值,遇到数据库关键字(java关键字),使用columnOverride覆盖-->
<property name="autoDelimitKeywords" value="true"></property>
<!--生成java文件的编码-->
<property name="javaFileEncoding" value="utf-8"></property>
<!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如Oracle就是 双引号 MySQL时反引号 -->
<!-- <property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>-->
<!--格式化Java代码-->
<property name="javaFormat" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
<!--格式化xml代码-->
<property name="xmlFormat" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!--通用mapper 插件 生成的mapper会继承这个类-->
<plugin type="${mapper.plugin}">
<property name="mappers" value="${mapper.mapper}"/>
</plugin>
<!--注释-->
<commentGenerator>
<property name="suppressAllComments" value="false"></property><!--是否取消注释-->
<property name="suppressDate" value="true"></property><!--是否生成注释带时间戳-->
</commentGenerator>
<!--jdbc连接-->
<jdbcConnection driverClass="${jdbc_driver}" connectionURL="${jdbc_url}"
userId="${jdbc_user}" password="${jdbc_password}"></jdbcConnection>
<!--类型转换-->
<!-- java类型处理器
用于处理DB中的类型到Java中的类型,默认使用JavaTypeResolverDefaultImpl;
注意一点,默认会先尝试使用Integer,Long,Short等来对应DECIMAL和 NUMERIC数据类型;
-->
<javaTypeResolver>
<!--是否使用bigDecimal,false可以自动转化一下类型(long,Integer,short,etc.)-->
<property name="forceBigDecimals" value="false"></property>
</javaTypeResolver>
<!--<javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl">
true:使用BigDecimal对应DECIMAL和 NUMERIC数据类型
false:默认,
scale>0;length>18:使用BigDecimal;
scale=0;length[10,18]:使用Long;
scale=0;length[5,9]:使用Integer;
scale=0;length<5:使用Short;
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver> -->
<!--生成实体类的地址-->
<javaModelGenerator targetPackage="cn.txx.domain" targetProject="${project}">
<!-- for MyBatis3/MyBatis3Simple
自动为每一个生成的类创建一个构造方法,构造方法包含了所有的field;而不是使用setter;
-->
<property name="constructorBased" value="false"/>
<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
<property name="enableSubPackages" value="false"></property>
<!-- for MyBatis3 / MyBatis3Simple
是否创建一个不可变的类,如果为true,
那么MBG会创建一个没有setter方法的类,取而代之的是类似constructorBased的类
-->
<property name="immutable" value="false"/>
<!-- 设置一个根对象,
如果设置了这个根对象,那么生成的keyClass或者recordClass会继承这个类;在Table的rootClass属性中可以覆盖该选项
注意:如果在key class或者record class中有root class相同的属性,MBG就不会重新生成这些属性了,包括:
1,属性名相同,类型相同,有相同的getter/setter方法;
-->
<!-- <property name="rootClass" value="com._520it.mybatis.domain.BaseDomain"/>-->
<!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
<property name="trimStrings" value="true"></property>
</javaModelGenerator>
<!--生成mapxml文件-->
<sqlMapGenerator targetPackage="mappers" targetProject="${resources}">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!--生成mapxml对应的client,就是接口dao-->
<!-- 对于mybatis来说,即生成Mapper接口,注意,如果没有配置该元素,那么默认不会生成Mapper接口
targetPackage/targetProject:同javaModelGenerator
type:选择怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):
1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML;
2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中;
3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;
注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER
-->
<javaClientGenerator type="XMLMAPPER" targetPackage="cn.txx.mapper" targetProject="${project}">
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<table tableName="emp" domainObjectName="Emp" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />
</context>
</generatorConfiguration>
相关属性配置参考:脚本之家关于Generator的使用
最后是我的properties文件:
#Generator configuration
#dao类和实体类的位置
project=src/main/java
#mapper文件的位置 xml文件
resources=src/main/resources
#根据数据库生成对应的domainl类,dao类,mapper.xml
jdbc_driver=oracle.jdbc.driver.OracleDriver
jdbc_url=jdbc:oracle:thin:@127.0.0.1:1521/XE
jdbc_user=bdms
jdbc_password=bdms
#通用mapper插件
mapper.plugin=tk.mybatis.mapper.generator.MapperPlugin
#生成通过dao文件需要继承的类
mapper.mapper=tk.mybatis.mapper.common.Mapper
请各位大佬多多指教.
ps:机会多半都是自己放走的.