MyBatis Generator 概述
MyBatis 的代码生成器。它能够根据数据库表,自动生成 java 实体类、dao 层接口(mapper 接口)及mapper.xml文件。
使用步骤
pom.xml中配置plugin
<build>
<plugins>
<!-- mybatis-generator -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<!-- mybatis-generator的配置文件,根据情况调整位置 -->
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
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>
<!--导入jdbc属性配置 -->
<!-- <properties resource="jdbc2.properties"/>-->
<!-- targetRuntime:目标代码属性(MyBatis3Simple:基本MyBatis的CURD,MyBatis3:功能更强大的MyBatis的CURD)-->
<context id="MysqlContext" targetRuntime="MyBatis3" defaultModelType="flat">
<!-- 自定义注释 -->
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="false"/>
<!--添加 db 表中字段的注释-->
<property name="addRemarkComments" value="true"/>
</commentGenerator>
<!-- 数据库链接URL、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/test"
userId="root"
password="111111">
</jdbcConnection>
<!-- 生成模型的包名和位置 -->
<javaModelGenerator targetPackage="com.example.demo.entity" targetProject="src/main/java"/>
<!-- 生成映射文件的包名和位置 -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo.mapper" targetProject="src/main/java"/>
<!-- 要生成的表,tableName是数据库中的表名全部表设为 %,domainObjectName是实体类名-->
<table tableName="t_user" domainObjectName="User"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="true"
selectByExampleQueryId="true"/>
</context>
</generatorConfiguration>
使用插件生成代码
生成Example类
这些参数改成true。
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"
使用Example
案例1:
TestTableExample example = new TestTableExample();
example.or().andField1EqualTo(5).andField2IsNull();
example.or().andField3NotEqualTo(9).andField4IsNotNull();
List field5Values = new ArrayList();
field5Values.add(8);
field5Values.add(11);
field5Values.add(14);
field5Values.add(22);
example.or().andField5In(field5Values);
example.or().andField6Between(3, 7);
在上面的例子中,,动态生成的where子句是:
where (field1 = 5 and field2 is null) or (field3 <> 9 and field4 is not null) or (field5 in (8, 11, 14, 22)) or (field6 between 3 and 7)
案例2:
PsbcDiscountQualificationGpExample example = new PsbcDiscountQualificationGpExample();
example.setOrderByClause("id asc");
PsbcDiscountQualificationGpExample.Criteria criteria = example.createCriteria();
criteria.andAreaIdEqualTo(new BigDecimal("333")).andAreaIdIsNotNull();
psbcDiscountQualificationGpMapper.selectByExample(example);
动态生成的where子句是:
WHERE ( area_id = 333 and area_id is not null ) order by id asc
案例3:
PsbcDiscountQualificationGpExample example = new PsbcDiscountQualificationGpExample();
PsbcDiscountQualificationGpExample.Criteria criteria1 = example.createCriteria();
PsbcDiscountQualificationGpExample.Criteria criteria2 = example.createCriteria();
criteria1.andAreaIdIsNotNull();
criteria2.andIdEqualTo(new BigDecimal("111"));
example.or(criteria2);
psbcDiscountQualificationGpMapper.selectByExample(example);
动态生成的where子句是:
WHERE ( area_id is not null ) or( id = 111 )