Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成Model
,Mapper
和Mapper.xml
,很大程度上减少了业务开发人员的手动编码时间
Mybatis-Generator官方文档:http://www.mybatis.org/generator/
Mybatis-Generator的下载可以到这个地址:https://github.com/mybatis/generator/releases
在IDEA中你可以在插件库中找到安装就好了
下面来介绍下使用方法
一、在pom.xml中添加plugin
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<dependencies>
<dependency>
<groupId> mysql</groupId>
<artifactId> mysql-connector-java</artifactId>
<version> 5.1.39</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
</dependencies>
<configuration>
<!--允许移动生成的文件 -->
<verbose>true</verbose>
<!-- 是否覆盖 -->
<overwrite>true</overwrite>
<!-- 自动生成的配置 -->
<configurationFile>
src/main/resources/mybatis-generator.xml</configurationFile>
</configuration>
</plugin>
configurationFile
是说明mybatis-generator的配置文件的位置
在插件中要引入mysql
和mybatis.generator
的依赖,不然就要说明jar包的路径了
假如不在plugin中加mysql的话启动会包这样的错Exception getting JDBC Driver: com.mysql.jdbc.Driver
也就是找不到mysql数据库的驱动
二、mybatis-generator.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>
<context id="MysqlTables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="false"/>
</commentGenerator>
<!--数据库链接地址账号密码-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/***"
userId="****"
password="****">
</jdbcConnection>
<!--数据库类型和java类型的控制转换-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成Model类存放位置-->
<javaModelGenerator targetPackage="com.yidu.armedical.model.po" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--生成映射文件存放位置-->
<sqlMapGenerator targetPackage="com.yidu.armedical.mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--生成Dao类存放位置-->
<!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.yidu.armedical.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--生成对应表及类名-->
<table tableName="product_model" domainObjectName="productModel" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
<jdbcConnection>
用于配置mysql数据库连接,需要路径,驱动,数据库用户名和密码。
<javaModelGenerator>
生成model实体类文件位置
<sqlMapGenerator>
生成mapper.xml配置文件位置
<javaClientGenerator>
生成mapper接口文件位置
<table>
需要生成的实体类对应的表名,多个实体类复制多份该配置即可
可选:
1,schema
:数据库的schema;
2,catalog
:数据库的catalog;
3,alias
:为数据表设置的别名,如果设置了alias,那么生成的所有的SELECT SQL语句中,列名会变成:alias_actualColumnName
4,domainObjectName
:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面;
5,enableInsert
(默认true):指定是否生成insert语句;
6,enableSelectByPrimaryKey
(默认true):指定是否生成按照主键查询对象的语句(就是getById或get);
7,enableSelectByExample
(默认true):MyBatis3Simple为false,指定是否生成动态查询语句;
8,enableUpdateByPrimaryKey
(默认true):指定是否生成按照主键修改对象的语句(即update);
9,enableDeleteByPrimaryKey
(默认true):指定是否生成按照主键删除对象的语句(即delete);
10,enableDeleteByExample
(默认true):MyBatis3Simple为false,指定是否生成动态删除语句;
11,enableCountByExample
(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询);
12,enableUpdateByExample
(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性);
13,modelType
:参考context元素的defaultModelType,相当于覆盖;
14,delimitIdentifiers
:参考tableName的解释,注意,默认的delimitIdentifiers是双引号,如果类似MYSQL这样的数据库,使用的是(反引号,那么还需要设置context的beginningDelimiter和endingDelimiter属性)
15,delimitAllColumns
:设置是否所有生成的SQL中的列名都使用标识符引起来。默认为false,delimitIdentifiers参考context的属性
三、到此为止,所有的配置已完毕。
方式一:使用idea的maven helper
插件直接快速生成
方式二:在Intellij IDEA添加一个“Run运行”选项,使用maven
运行mybatis-generator-maven-plugin
插件 :
首先选择配置edit configuration
编辑结构
创建maven运行项
配置命令
mybatis-generator:generate -e
运行
运行成功
参考文章:
http://blog.csdn.net/liudongdong0909/article/details/51534735
http://www.jianshu.com/p/e09d2370b796