1,逆向生成(从数据库表---->代码)的作用:
可以自动生成关于数据库中的表的实体类pojo
可以自动生成实体类的持久层Dao
可以自动生成持久层的映射文件Mapper
2,配置Maven项目的pom.xml,在pom.xml增加以下插件,以及依赖:
<!--插件-->
<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>
<!-- 依赖-->
<!-- mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<!-- 数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<!-- 逆向工程-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
3,配置好Maven插件,下面需要配置插件需要配置文件,在maven项目下的config文件下放generator.xml配置文件。
4,generator.xml代码如下:
配置文件需要修改的内容:
1,数据库驱动、地址、用户名、密码(不同版本的tomcat配置jdbc有区别)
2,POJO类、mapper接口、mapper映射文件生成的位置
3,指定数据表
<?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="D:\software\lib\mysql-connector-java-5.1.21.jar"
/> -->
<!-- <classPathEntry location="C:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar"
/> -->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 序列化model -->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- 数据库链接URL、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/school?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true" userId="root"
password="root">
</jdbcConnection>
<!-- <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"-->
<!-- connectionURL="jdbc:mysql://localhost:3306/sudent?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true" userId="root"-->
<!-- password="root">-->
<!-- </jdbcConnection>-->
<!-- <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@localhost:1521:orcl"
userId="scott" password="tiger"> </jdbcConnection> -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置 main.com.qianfeng.pojo-->
<javaModelGenerator targetPackage="com.qianfeng.pojo"
targetProject=".\src">
<property name="enableSubPackages" value="false"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成的映射文件包名和位置 -->
<sqlMapGenerator targetPackage="com.qianfeng.dao.mapper"
targetProject=".\src">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.qianfeng.dao" targetProject=".\src">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成那些表(更改tableName和domainObjectName就可以) -->
<table tableName="student" schema=""/>
<table tableName="subject" schema=""/>
<table tableName="score" schema=""/>
</context>
</generatorConfiguration>
5,GeneratorText.java
配置完成之后运行GeneratorText.java中的main方法就会生成对应数据表的代码,生成后记得右键项目名刷新。如果需要再次生成,一定要记得先把原来生成的删除。
import org.junit.Test;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.api.ShellCallback;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class GeneratorText {
@Test
public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException, SQLException {
//配置文件的路径
File f = new File("config/generator.xml");
List<String> warnings = new ArrayList<String>();
ConfigurationParser parser = new ConfigurationParser(warnings);
Configuration configuration = parser.parseConfiguration(f);
boolean overwrite = true;
ShellCallback shellCallback = new DefaultShellCallback(overwrite);
MyBatisGenerator generator = new MyBatisGenerator(configuration, shellCallback, warnings);
generator.generate(null);
System.out.println("OK!");
}
}
6,生成的代码,
如果有N张表,就会生成2N个POJO,N个mapper.java以及N个mapper.xml,也许你会问,为什么会生成2N个POJO呢?那是因为他除了常规的POJO之外还生成了用于设置条件的xxxExample。
以学生表为例,内含基本的增删改查方法,是程序员更专注于逻辑业务的处理
7,不使用Maven的java项目,参考此图。