首页 > 其他分享 >11_逆向工程

11_逆向工程

时间:2023-02-25 10:44:24浏览次数:31  
标签:11 逆向 工程 generator new appender import org log4j

 MyBatis的一个主要的特点就是需要程序员自己编写SQL,那么如果表太多的话,难免会很麻烦,所以MyBatis官方提供了一个逆向工程,可以针对单表自动生成MyBatis执行所需要的代码(包括mapper.xml,mapper.java,pojo)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。

 

 

创建maven项目导入逆向工程依赖

 

<dependencies>
  
    <!-- mysql驱动包 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.16</version>
    </dependency>
    <!-- 日志包,方便查看执行信息-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.1</version>
    </dependency>
    <!-- 代码生成工具jar -->
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.3.2</version>
    </dependency>
</dependencies>

 

配置逆向工程配置文件 在resources目录下放置一个名为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>
   <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="123">
      </jdbcConnection> -->
       <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
         connectionURL="jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true"
         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="com.msb.pojo"
         targetProject=".\src">
         <!-- enableSubPackages:是否让schema作为包的后缀 -->
         <property name="enableSubPackages" value="false" />
         <!-- 从数据库返回的值被清理前后的空格 -->
         <property name="trimStrings" value="true" />
      </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
      <sqlMapGenerator targetPackage="com.msb.mapper"
         targetProject=".\src">
         <!-- enableSubPackages:是否让schema作为包的后缀 -->
         <property name="enableSubPackages" value="false" />
      </sqlMapGenerator>
      <!-- targetPackage:mapper接口生成的位置 -->
      <javaClientGenerator type="XMLMAPPER"
         targetPackage="com.msb.mapper"
         targetProject=".\src">
         <!-- enableSubPackages:是否让schema作为包的后缀 -->
         <property name="enableSubPackages" value="false" />
      </javaClientGenerator>
      <!-- 指定数据库表 -->
      
      <table tableName="dept" domainObjectName="Dept"
       enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"    
               enableSelectByExample="false" selectByExampleQueryId="false" >
               <columnOverride column="id" javaType="Integer" />
         </table>
      
   </context>
</generatorConfiguration>

 

在resources目录下放置一个名为log4j.properties的配置文件,文件内容如下

log4j.rootLogger=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=d:/msb.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n


运行逆向工程代码

package com.msb.gennerator;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
 *
 */
public class GeneratorSqlmap {
    public void generator() throws Exception{
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("D:\\ideaProjects\\reverse\\target\\classes\\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) throws Exception {
        try {
            GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

生成的实体类和Mapper接口和Mapper映射文件,包含了基本的CURD功能,哪里需要文件就放哪里

 

标签:11,逆向,工程,generator,new,appender,import,org,log4j
From: https://www.cnblogs.com/2324hh/p/17153923.html

相关文章

  • #119. 最大整数 题解
    #119.最大整数题解题目传送门题目知识点字符串+贪心题意说明设有n个正整数(n<=20),将它们连接成一排,组成一个最大的多位整数。(题目简介明了,一看就是出题人懒得写题目背......
  • Android 观察App运行日志和面对安装工程中需要在
    Android采用Log工具打印日志,它将各类日志划分为五个等级;log.e表示错误信息,比如可能导致程序崩溃的异常log.w表示警告信息log.i表示一般消息log.d表示调试信息。可把程......
  • P8711 [蓝桥杯 2020 省 B1] 整除序列
    题目传送门题目大意有一个序列,序列的第一个数是\(n\),后面的每个数是前一个数整除\(2\),请输出这个序列中值为正数的项。解题思路序列的第一个数为\(n\),所以可以先直......
  • 洛谷P1149
    [洛谷P1149]([P1149NOIP2008提高组]火柴棒等式-洛谷|计算机科学教育新生态(luogu.com.cn))publicclassP1149{ publicstaticvoidmain(String[]args){ S......
  • 软件工程第二周开课博客
    1.介绍自己我是一名软件工程系的学生,这次在这里发表我的软件工程第二周开课博客,自己是一个平凡之人,但仍对生活充满着激情,希望,性格上较为乐观,开朗。最近我渐渐热爱上了打......
  • 软件工程第二周开课博客
    一.介绍自己 我是来自信2105-3班的吕金帅,没有什么兴趣爱好,喜欢看书,上课按时交作业,虽然没有获得过加分,但我仍然会继续努力。二.现状、经验和计划  现状:现在的自己......
  • 系统集成项目管理工程师(中级) -- 信息化知识
    一、信息与信息化我国信息化建设处于深入发展阶段。信息化就是计算机、通信和网络技术的现代化。主体:全体社会成员手段:生产工具目的:生活质量全面提升途径:社会生产......
  • 软件工程第二周开课博客
    介绍自己刘梦阳,男,软件工程专业大二学生。一个有着远大抱负,但是很迷茫不知如何做起的大学生。现状、经验在大一时期曾专注于算法竞赛,在这方面有一点点经验。大二上学期投......
  • 软件工程日报四——了解登录系统
    今天我继续进行安卓studio的相关内容的学习,因为有老师的进度任务,所以我没有按照视频课里面的内容来开始学习。建民老师让我们写一个每日打开app程序,里面有一部分是用户注......
  • 第一卷《社会工程学:信息的艺术》十二章:隐私保护
    这是最后一章,也是最重要的一章,保护自己。我们泄露信息其实就是自己没有把一些信息保护好,有什么照片啊,工作啊都发在各个平台,而且没有设置软件的隐私设置,比如QQ有个通讯录添......