• Mybatis 逆向工程使用(Day_17)


    有三个方法可以解决所有的问题:接受,改变,离开。不能接受那就改变,不能改变,那就离开。


    【何为逆向工程?】

      众 所 周 知 ,正向工程就是通过JAVA类的设置来生成对应的数据库表。

      MyBatis逆向工程,就是使用官方网站的mapper自动生成工具mybatis-generator-core-1.3.2来生成po类和mapper映射文件(单表增删改查)。

      mybatis需要编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java、mapper.xml、pojo…),提高工作效率。

    【使用工具】

      IntelliJ IDEA 2018.3 

     

    【官网】

    https://mybatis.org/mybatis-3

    【使用步骤】

    (1)、添加POM依赖

     1 <dependencies>
     2         <!--逆向工程需要使用到mybatis-generator-core-->
     3         <dependency>
     4             <groupId>org.mybatis.generator</groupId>
     5             <artifactId>mybatis-generator-core</artifactId>
     6             <version>1.3.7</version>
     7         </dependency>
     8         <!--本次操作中使用的mybatis-->
     9         <dependency>
    10             <groupId>org.mybatis</groupId>
    11             <artifactId>mybatis</artifactId>
    12             <version>3.5.6</version>
    13         </dependency>
    14         <!--连接数据库所需的依赖-->
    15         <dependency>
    16             <groupId>mysql</groupId>
    17             <artifactId>mysql-connector-java</artifactId>
    18             <version>5.1.48</version>
    19         </dependency>
    20 </dependencies>

      

    (2)、新增generatorConfig.xml文件。配置数据库连接、指定生成的文件和位置,以及所要生成的数据库表

      

         generatorConfig.xml文件:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE generatorConfiguration
     3   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
     4   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
     5 
     6 <generatorConfiguration>
     7     <properties resource="database.properties"/>
     8     <context id="testTables" targetRuntime="MyBatis3">
     9         <commentGenerator>
    10             <!-- 是否去除自动生成的注释 true:是 : false:否 -->
    11             <property name="suppressAllComments" value="true" />
    12         </commentGenerator>
    13         <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
    14         <jdbcConnection driverClass="${driver}"
    15             connectionURL="${url}" userId="${username}"
    16             password="${password}">
    17         </jdbcConnection>
    18         <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 
    19             和 NUMERIC 类型解析为java.math.BigDecimal -->
    20         <javaTypeResolver>
    21             <property name="forceBigDecimals" value="false" />
    22         </javaTypeResolver>
    23 
    24         <!-- targetProject:生成PO类的位置 -->
    25         <javaModelGenerator targetPackage="com.papercy.smbms.pojo"
    26             targetProject=".srcmainjava">
    27             <!-- enableSubPackages:是否让schema作为包的后缀 -->
    28             <property name="enableSubPackages" value="false" />
    29             <!-- 从数据库返回的值被清理前后的空格 -->
    30             <property name="trimStrings" value="true" />
    31         </javaModelGenerator>
    32         <!-- targetProject:mapper映射文件生成的位置 -->
    33         <sqlMapGenerator targetPackage="com.papercy.smbms.mapper"
    34             targetProject=".srcmainjava">
    35             <!-- enableSubPackages:是否让schema作为包的后缀 -->
    36             <property name="enableSubPackages" value="false" />
    37         </sqlMapGenerator>
    38         <!-- targetPackage:mapper接口生成的位置 -->
    39         <javaClientGenerator type="XMLMAPPER"
    40             targetPackage="com.papercy.smbms.mapper" targetProject=".srcmainjava">
    41             <!-- enableSubPackages:是否让schema作为包的后缀 -->
    42             <property name="enableSubPackages" value="false" />
    43         </javaClientGenerator>
    44         <!-- 指定数据库表 -->
    45         <table schema="" tableName="smbms_user" domainObjectName="User"></table>
    46         <table schema="" tableName="smbms_role" domainObjectName="Role"></table>
    47         <table schema="" tableName="smbms_provider" domainObjectName="Provider"></table>
    48         <table schema="" tableName="smbms_bill" domainObjectName="Bill"></table>
    49         <table schema="" tableName="smbms_address" domainObjectName="Address"></table>
    50 
    51     </context>
    52 </generatorConfiguration>

    (3)、properties 文件

    1 driver=com.mysql.jdbc.Driver
    2 url=jdbc:mysql://localhost/smbms?useUnicode=true&characterEncoding=UTF-8
    3 username=root
    4 password=123456

    (4)、添加主程序运行项目

        GeneratorSqlmap.java 文件:

     1 import org.mybatis.generator.api.MyBatisGenerator;
     2 import org.mybatis.generator.config.Configuration;
     3 import org.mybatis.generator.config.xml.ConfigurationParser;
     4 import org.mybatis.generator.internal.DefaultShellCallback;
     5 
     6 import java.io.File;
     7 import java.util.ArrayList;
     8 import java.util.List;
     9 
    10 public class GeneratorSqlmap {
    11 
    12     public void generator() throws Exception {
    13 
    14         List<String> warnings = new ArrayList<String>();
    15         boolean overwrite = true;
    16         // 指定 逆向工程配置文件(绝对路径)
    17         File configFile = new File("C:\PapercyFile\IDEADemo\mbatis10\src\main\resources\generatorConfig.xml");
    18         ConfigurationParser cp = new ConfigurationParser(warnings);
    19         Configuration config = cp.parseConfiguration(configFile);
    20         DefaultShellCallback callback = new DefaultShellCallback(overwrite);
    21         MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
    22         myBatisGenerator.generate(null);
    23 
    24     }
    25 
    26     public static void main(String[] args) throws Exception {
    27         try {
    28             GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
    29             generatorSqlmap.generator();
    30         } catch (Exception e) {
    31             e.printStackTrace();
    32         }
    33 
    34     }
    35 
    36 }

    (5)、可能xml文件有不识别现象,在 POM 中添加如下代码。

     1 <build>
     2         <resources>
     3             <resource>
     4                 <directory>${basedir}/src/main/java</directory>
     5                 <includes>
     6                     <include>**/*.xml</include>
     7                 </includes>
     8             </resource>
     9         </resources>
    10     </build>

    (6)、最后执行主程序GeneratorSqlmap,得到结果如图所示,pojo,mapper映射文件:

    【结束语】

      至此,Mybatis 逆向工程使用 就告一段落了,本篇博客只是使用主程序运行来生成逆向工程,

    还有 使用插件  从而运行逆向工程的。 简单介绍下:

      mybatis-generator-core :进入https://mvnrepository.com/搜索 MyBatis ,找到 MyBatis Generator Core 

      如下图 :

    从而使用此插件实现逆向工程。

      推荐一篇比较详细的使用插件实现逆向工程的(博客):

    https://www.cnblogs.com/xqz0618/p/javaweb05.html

      我是肥肥也,喜欢就点点【关注】,不喜欢也没关系,喜欢我的人多了去了,又不差你一个~

    See you 

     

  • 相关阅读:
    用Android Studio 开发Android应用
    以前写的一个下载小说的工具
    折半算法的C#实现方式-递归和非递归
    128. 最长连续序列
    一语点醒技术人:你不是 Google(转载)
    计算机专业导论与思维系统--哈工大
    安卓笔记 09_28
    安卓学习笔记
    安卓数据库08_29
    08_28学习笔记Kotlin
  • 原文地址:https://www.cnblogs.com/papercy/p/13965761.html
Copyright © 2020-2023  润新知