- 所谓的逆向⼯程是:根据数据库表逆向⽣成 Java的pojo类,SqlMapper.xml⽂件,以及Mapper接⼝类等。
- 要完成这个⼯作,需要借助别⼈写好的逆向⼯程插件。
- 思考:使⽤这个插件的话,需要给这个插件配置哪些信息?
- pojo类名、包名以及⽣成位置。
- SqlMapper.xml⽂件名以及⽣成位置。
- Mapper接⼝名以及⽣成位置。
- 连接数据库的信息。
- 指定哪些表参与逆向⼯程。
- …
一、逆向⼯程配置与⽣成
1.在pom中添加逆向⼯程插件
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.1</version>
<configuration>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
2.配置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>
<context id="DB2Tables" targetRuntime="MyBatis3">
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/数据库名"
userId="用户名"
password="密码">
</jdbcConnection>
<javaModelGenerator targetPackage="com.gdb.generate.pojo" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.gdb.generate.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator
type="xmlMapper"
targetPackage="com.gdb.generate.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table tableName="article" domainObjectName="Article"
enableCountByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
enableUpdateByExample="false"
selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
3.运⾏插件
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/57dd13c57ed14d3abe38589e5f9e3133.png)
4.结果展示
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/98c79ed77189470bb5a6e88cdfc3c7e9.png)
二、测试逆向⼯程⽣成的是否好⽤
1.准备环境
- 添加依赖:mybatis依赖、mysql驱动依赖、junit依赖
- jdbc.properties
- mybatis-config.xml
- pom.xml 中添加resource配置
- 因为 maven 默认不会编译源代码中的 *.xml 文件,需要配置 resource。
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>
2.编写测试程序
import com.gdb.generate.mapper.ArticleMapper;
import com.gdb.generate.pojo.ArticleExample;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.gdb.generate.pojo.Article;
import java.util.List;
public class GeneratorTest {
@Test
public void testGenerator() throws Exception {
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();
ArticleMapper mapper = sqlSession.getMapper(ArticleMapper.class);
Article article = mapper.selectByPrimaryKey(1);
System.out.println(article);
List<Article> cars = mapper.selectByExample(null);
cars.forEach(c -> System.out.println(c));
System.out.println("=======================");
ArticleExample articleExample = new ArticleExample();
articleExample.createCriteria().andTitleEqualTo("JavaWeb")
.andUserIdBetween(9752, 99999);
articleExample.or().andCreateTimeIsNotNull();
mapper.selectByExample(articleExample);
sqlSession.commit();
sqlSession.close();
}
}