MyBatis 逆向工程
一、什么是逆向工程?
简单点说,就是通过数据库中的单表,自动生成java代码。
Mybatis官方提供了逆向工程,可以针对单表自动生成mybatis代码(mapper.java\mapper.xml\po类)
企业中,逆向工程是个很常用的工具,之前我们就学习了hibernate的逆向工程,比我们手动创建映射文件的配置信息方便很多,总是就是很方便。
直接粘代码
Maven 添加 mybatis 依赖
<!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <!--mapper--> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>1.2.4</version> </dependency> <!--pagehelper--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.3</version> </dependency> <!-- mybatis 逆向生成工具 --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> <scope>compile</scope> <optional>true</optional> </dependency>
核心jar XML文件生成 -- 不知道为啥 在 生成 Java 和 XML的配置中 targerProject 设置成绝对路径就可以成功 ,相对路径就无法生成
<?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="MysqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat"> <commentGenerator> <!-- 是否去除自动生成的注释(生成的注释是英文的) true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://192.168.44.180:3306/springboot" userId="root" password="123456"> </jdbcConnection> <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 对于生成的pojo所在包 --> <javaModelGenerator targetPackage="com.imooc.netty.wechart.pojo" targetProject="/Users/tony/Desktop/WEB/wechart/src/main/java"/> <!-- 对于生成的mapper所在目录 --> <sqlMapGenerator targetPackage="mapper" targetProject="/Users/tony/Desktop/WEB/wechart/src/main/resources"/> <!-- 配置mapper对应的java映射 --> <javaClientGenerator targetPackage="com.imooc.netty.wechart.mapper" targetProject="/Users/tony/Desktop/WEB/wechart/src/main/java" type="XMLMAPPER"/> <!-- 生成的pojo类的属性名和表的列名一致,默认是遇到下划线变驼峰的。比如表中有一列叫user_id,那么默认生成的类属性名是userId --> <table tableName="users" > <property name="useActualColumnNames" value="true"/> </table> <table tableName="my_friends" > <property name="useActualColumnNames" value="true"/> </table> <table tableName="request" > <property name="useActualColumnNames" value="true"/> </table> <table tableName="chart_msg" > <property name="useActualColumnNames" value="true"/> </table> </context> </generatorConfiguration>
指定 Main 方法 固定写法,解析XML文件
public class GeneratorDisplay { public void generator() throws Exception{ List<String> warnings = new ArrayList<String>(); boolean overwrite = true; //指定 逆向工程配置文件 File configFile = new File("wechart/generatorConfig.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,callback, warnings); myBatisGenerator.generate(null); } public static void main(String[] args) { try { GeneratorDisplay generatorSqlmap = new GeneratorDisplay(); generatorSqlmap.generator(); } catch (Exception e) { e.printStackTrace(); } } }
项目目录结构