zoukankan      html  css  js  c++  java
  • MyBatis学习(十四)--逆向工程使用

    什么是逆向工程

      简单的说,就是通过数据库表自动生成需要的Java代码;mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po..)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。

    步骤

      1、下载逆向工程所需的jar包:逆向工程

      2、下载MyBatis所需的jar包:MyBatis

      3、新建一个Java工程,导入这些必需的包

      

      4、点进下载的逆向工程文件mybatis-generator-core-1.3.2docs这个目录下的index.html文件

      

      5、创建核心类。我们需要去打开的页面中找到核心类的代码

      

    import java.io.File;
    import java.io.IOException;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.ibatis.session.Configuration;
    import org.mybatis.generator.api.MyBatisGenerator;
    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;
    
    public class Generator {
    
        public static void main(String[] args) throws Exception {
            // TODO Auto-generated method stub
            List<String> warnings = new ArrayList<String>();
               boolean overwrite = true;
               File configFile = new File("conf/generatorConfig.xml");
               ConfigurationParser cp = new ConfigurationParser(warnings);
               org.mybatis.generator.config.Configuration config = cp.parseConfiguration(configFile);
               DefaultShellCallback callback = new DefaultShellCallback(overwrite);
               MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
               myBatisGenerator.generate(null);
    
        }
    
    }

      放到eclipse中创建的主函数里面:

     

      6、创建核心配置文件。同样,去打开的页面中找到核心配置文件

      

    <?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="testTables" targetRuntime="MyBatis3">
            <commentGenerator>
                <!-- 是否去除自动生成的注释 true:是 : false:否 -->
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
            
            <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"
                password="root">
            </jdbcConnection>
    
            <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 
                和 NUMERIC 类型解析为java.math.BigDecimal -->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
    
            <!-- targetProject:生成PO类的位置 -->
            <javaModelGenerator targetPackage="entity" targetProject=".src">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
                <!-- 从数据库返回的值被清理前后的空格 -->
                <property name="trimStrings" value="true" />
            </javaModelGenerator>
            
            <!-- targetProject:mapper映射文件生成的位置 -->
            <sqlMapGenerator targetPackage="mapper" targetProject=".src">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
            </sqlMapGenerator>
            
            <!-- targetPackage:mapper接口生成的位置 -->
            <javaClientGenerator type="XMLMAPPER" targetPackage="mapper" targetProject=".src">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
            </javaClientGenerator>
            
            <!-- 指定数据库表 -->
            <table tableName="author"></table>
            <table tableName="blog"></table>
            <table tableName="post"></table>
        </context>
    </generatorConfiguration>

      7、运行核心类,就可以自动生成代码了;

      

      8、注意事项:

      

      框起来的地方路径应该设成你的核心配置文件的路径;

      好了,逆向生成就成功了;

    PS:因作者能力有限,如有误还请谅解;

  • 相关阅读:
    leetcode 33. Search in Rotated Sorted Array
    leetcode 32. Longest Valid Parentheses
    leetcode 28. Implement strStr()
    leetcode 27. Remove Element
    leetcode 26. Remove Duplicates from Sorted Array
    leetcode 24. Swap Nodes in Pairs
    leetcode 22. Generate Parentheses
    树莓派的频率管理和热控制
    sql执行insert插入一条记录同时获取刚插入的id
    全程直播个人博客重构过程,采用springboot+dubbo+jpa技术栈。
  • 原文地址:https://www.cnblogs.com/WHL5/p/8868021.html
Copyright © 2011-2022 走看看