使用 mybatis 逆向工程可以很方便地与数据库中的表自动映射, 并生成 mapper.xml 和 mapper 接口.
此处我使用 IDEA 通过 maven 的方式进行演示.
第一步: 配置 pom.xml 文件
引入对应架包, 逆向工程重点需要 mybatis-generator-core 架包和 mybatis-generator-maven-plugin 插件
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.xiaojiang.mybatisDemo02</groupId>
- <artifactId>mybatisDemo02</artifactId>
- <version>1.0-SNAPSHOT</version>
- <!-- 抽取版本号, 统一管理 -->
- <properties>
- <mybatis.version>3.4.6</mybatis.version>
- <MySQL.version>8.0.15</MySQL.version>
- <junit.version>4.10</junit.version>
- <generator.version>1.3.2</generator.version>
- <generator-plugin.version>1.3.2</generator-plugin.version>
- </properties>
- <dependencies>
- <!--MyBatis-->
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis</artifactId>
- <version>${mybatis.version}</version>
- </dependency>
- <!--mysql 数据库驱动包 -->
- <dependency>
- <groupId>MySQL</groupId>
- <artifactId>MySQL-connector-java</artifactId>
- <version>${MySQL.version}</version>
- </dependency>
- <!--Junit 单元测试工具 -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>${junit.version}</version>
- <scope>test</scope>
- </dependency>
- <!--mybatis-generator-core 反向生成 Java 代码 -->
- <dependency>
- <groupId>org.mybatis.generator</groupId>
- <artifactId>mybatis-generator-core</artifactId>
- <version>${generator.version}</version>
- </dependency>
- </dependencies>
- <build>
- <finalName>mybatis02</finalName>
- <plugins>
- <!--mybatis 代码生成插件 -->
- <plugin>
- <groupId>org.mybatis.generator</groupId>
- <artifactId>mybatis-generator-maven-plugin</artifactId>
- <version>${generator-plugin.version}</version>
- <configuration>
- <verbose>true</verbose>
- <overwrite>true</overwrite>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
第二步: 创建 db.properties 属性文件
jdbc.driverLocation = 引入本地架包路径
- jdbc.driver=com.MySQL.cj.jdbc.Driver
- jdbc.url=jdbc:MySQL://localhost:3306 / 数据库名? characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=UTC
- jdbc.username=root
jdbc.password = 密码
接着配置关键配置文件: 创建 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>
- <!-- 导入属性配置 -->
- <properties resource="db.properties"></properties>
- <!-- 指定特定数据库的 jdbc 驱动 jar 包的位置 -->
- <classPathEntry location="${jdbc.driverLocation}"/>
- <context id="default" targetRuntime="MyBatis3">
- <!-- optional, 旨在创建 class 时, 对注释进行控制 -->
- <commentGenerator>
- <!-- 是否去除自动生成的注释. true: 是 false: 否 -->
- <property name="suppressDate" value="true" />
- </commentGenerator>
- <!--jdbc 的数据库连接 -->
- <jdbcConnection
- driverClass="${jdbc.driver}"
- connectionURL="${jdbc.url}"
- userId="${jdbc.username}"
- password="${jdbc.password}"
- />
- <!-- 非必需, 类型处理器, 在数据库类型和 java 类型之间的转换控制 -->
- <javaTypeResolver>
- <property name="forceBigDecimals" value="false" />
- </javaTypeResolver>
- <!-- Model 模型生成器, 用来生成含有主键 key 的类, 记录类 以及查询 Example 类
- targetPackage 指定生成的 model 生成所在的包名
- targetProject 指定在该项目下所在的路径
- -->
- <javaModelGenerator targetPackage="com.xiaojiang.entities" targetProject="src/main/java">
- <!-- 是否对 model 添加 构造函数 -->
- <property name="constructorBased" value="true"/>
- <!-- 是否允许子包, 即 targetPackage.schemaName.tableName -->
- <property name="enableSubPackages" value="false"/>
- <!-- 建立的 Model 对象是否 不可改变 即生成的 Model 对象不会有 setter 方法, 只有构造方法 -->
- <property name="immutable" value="false"/>
- <!-- 是否对类 CHAR 类型的列的数据进行 trim 操作 -->
- <property name="trimStrings" value="true"/>
- </javaModelGenerator>
- <!--Mapper 映射文件生成所在的目录 为每一个数据库的表生成对应的 SqlMap 文件 -->
- <sqlMapGenerator targetPackage="com.xiaojiang.mapper" targetProject="src/main/resources">
- <property name="enableSubPackages" value="false"/>
- </sqlMapGenerator>
- <!-- 客户端代码, 生成易于使用的针对 Model 对象和 XML 配置文件 的代码
- type="ANNOTATEDMAPPER", 生成 Java Model 和基于注解的 Mapper 对象
- type="MIXEDMAPPER", 生成基于注解的 Java Model 和相应的 Mapper 对象
- type="XMLMAPPER", 生成 SQLMap XML 文件和独立的 Mapper 接口
- -->
- <javaClientGenerator targetPackage="com.xiaojiang.dao" targetProject="src/main/java" type="XMLMAPPER">
- <property name="enableSubPackages" value="false"/>
- </javaClientGenerator>
- <table tableName="user" schema="mybatis"></table>
- </context>
- </generatorConfiguration>
此时还没使用 maven 插件的时候项目的初始包结构是这样的.
图片. PNG
之后点击菜单的 Run-->Edit Configuartions 配置 maven 工具, 然后点击 Apply 即可.
图片. PNG
第三步: 调用 IDEA 侧边的 Maven Projects, 然后直接点击运行或者直接双击 mybatis-generator:generate
图片. PNG
最后就可以看到结果了.
图片. PNG
关于 mybatis 逆向工程的配置文件可查看这里 逆向工程官方文档, 逆向工程, 讲到底 generatorConfig.xml 配置文件最重要.
附一篇逆向工程的另一种实现方式: 使用 Java 程序创建方式
来源: http://www.jianshu.com/p/fbff088a65ae