Mybatis 逆向工程
Mybatis Generator(MBG)是一个专门为 MyBatis 框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及 bean 类。支持基本的增删改查,以及 QBC 风格的条件查询。但是表连接、存储过程等这些复杂 sql 的定义需要我们手工编写。
官方文档:http://www.mybatis.org/generator/
通过 maven 运行 MBG
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>${mbg.version}</version>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
配置 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>
<!--指定数据库驱动类的路径-->
<classPathEntry location="F:\apache-maven-3.5.2\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/>
<!--指定生成一组对象的环境
targetRuntime="MyBatis3Simple" 即生成简单的CRUD
-->
<context id="MySqlTable" targetRuntime="MyBatis3Simple">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql:///mybatis"
userId="root"
password="root">
</jdbcConnection>
<!--定义Java类型解析器的属性-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- javaModelGenerator 用于定义Java bean 生成策略的属性
targetPackage 目标包名
targetProject 目标工程
-->
<javaModelGenerator targetPackage="com.chen.entity"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--指定 sql 映射文件路径-->
<sqlMapGenerator targetPackage="com.chen.dao.xml" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--指定 mapper 接口路径-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.chen.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--指定生成哪些表-->
<table tableName="users" domainObjectName="User"/>
<table tableName="department" domainObjectName="Department"/>
</context>
</generatorConfiguration>
通过 idea 生成
targetRuntime="MyBatis3Simple"
生成后
而 targetRuntime="MyBatis3"
生成后的 java bean
而 XXXExample 是封装查询条件的类
//封装查询条件
UserExample example = new UserExample();
//创建一个 Criteria,来拼装查询条件
UserExample.Criteria criteria1 = example.createCriteria();
criteria1.andNameLike("%e%");
criteria1.andAgeBetween(10,30);
UserExample.Criteria criteria2 = example.createCriteria();
criteria2.andNameLike("%o%");
example.or(criteria2);
@Test
public void testMBG() throws IOException {
SqlSession sqlSession = getSqlSessionFactory().openSession(true);
try {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//封装查询条件
UserExample example = new UserExample();
//创建一个 Criteria,来拼装查询条件
UserExample.Criteria criteria1 = example.createCriteria();
criteria1.andNameLike("%e%");
UserExample.Criteria criteria2 = example.createCriteria();
criteria2.andNameLike("%o%");
example.or(criteria2);
// 此时 sql 语句被拼接为 select id,name,age,d_id from users where (name like ?) or (name like ?)
mapper.selectByExample(example);
example.or(criteria2);
} finally {
sqlSession.close();
}
}