使用Intellij Idea2016.3.1+Maven3.3.9。
一、mybatis-generator的使用
作用:根据数据库自动生成pojo、dao和xml文件。
1、引入mybatis-generator
pom.xml中引入配置:
<build>
<finalName>MMall</finalName>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<!--允许移动生成的文件-->
<verbose>true</verbose>
<!--允许覆盖生成的文件-->
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
添加完后,在Maven Projects的Plugins中会多出一个mybatis-generator,如图:
双击mybaitis-generator:generate,执行生成代码操作,控制台会提示BUILD FAILURE。
原因如下:
[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:
generate (default-cli) on project MMall:
configfile C:\Users\Administrator\Desktop\MMall\src\main\resources\generatorConfig.xml
does not exist -> [Help 1]
提示我们generatorConfig.xml这个文件不存在。
2、引入generatorConfig.xml配置
新建方法:在resources处右击选择New——>mybatis-generator-config,如图
填写finaname为:generatorConfig,生成代码,并修改:
<?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>
<!--导入属性配置-->
<properties resource="db.properties"></properties>
<!-- 指定特定数据库的jdbc驱动jar包的位置 -->
<classPathEntry location="${db.driverLocation}"/>
<!--
context:至少需要有一个<context>元素,用于指定一组对象的环境。
必选属性:id:用来确定一个<context>元素
可选属性:
1、defaultModelType:**这个属性很重要**,这个属性定义了MBG如何生成**实体类**。
conditional 默认属性,这个模型和下面的hierarchical类似,除了如果那个单独的类将只包含一个字段,
将不会生成一个单独的类。因此,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类,
将该字段合并到基本实体类中。
flat:该模型为每一张表只生成一个实体类。这个实体类包含表中的所有字段。**这种模型最简单,推荐使用。
hierarchical:如果表有主键,那么该模型会产生一个单独的主键实体类,如果表还有BLOB字段,
则会为表生成一个包含所有BLOB字段的单独的实体类,
然后为所有其他的字段生成一个单独的实体类。 MBG会在所有生成的实体类之间维护一个继承关系。
2、targetRuntime::此属性用于指定生成的代码的运行时环境。一般使用默认值即可。
MyBatis3:*这是默认值*
MyBatis3Simple
Ibatis2Java2
Ibatis2Java5
-->
<context id="context" defaultModelType="conditional" targetRuntime="MyBatis3">
<!--旨在创建class时,对注释进行控制-->
<commentGenerator>
<!--suppressAllComments false时打开注释,true时关闭注释-->
<property name="suppressAllComments" value="false"/>
<!--suppressD