11_逆向工程

news2024/11/26 0:43:54

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功能,哪里需要文件就放哪里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据安全治理笔记

数据安全治理整理概述 数据安全治理不仅局限于组织内部&#xff0c;而是需要一个国家、行业组织、可言机构、企业和个人共同努力完成的课题。因此&#xff0c;应该分别重广义和狭义的角度看待数据安全治理。 广义地说&#xff1a;数据安全治理是在过数据安全战略的知道下&…

状态寄存器传送指令 —— 访问(读写)CPSR寄存器

CPSR寄存器控制着CPU的工作模式和运算状态&#xff0c;出于对CPSR的保护&#xff0c;不允许其他指令来访问CPSR寄存器。 因此&#xff0c;ARM提供了读写指令来操作CPSR寄存器&#xff0c;这两个指令是ARM特有的指令集&#xff0c;因为处理器之间存在一定差异&#xff0c;控制状…

在React中组件间过渡动画如何实现?

用transition 只能作一些最简单的动画,如果稍微复杂一点就做不出来了,这时候就可以用CSS3中的keyframes 像下面这样通过css实现动画: .show {animation:show-item 2s ease-in forwards; } .hide {animation:hide-item 2s ease-in forwards; }@keyframes hide-item{

STM32F051——USART

我在大二学32的时候曾经写过一篇博客&#xff0c;现在看了一个韩老师的专题课后再来完善一下32串口方面的知识。所有的知识都可在官方手册中找到&#xff0c;目前我认为学习一个新的芯片&#xff0c;最全最细的就是官方手册了&#xff0c;英文看不懂可以看中文的&#xff0c;不…

Nessus破解教程

Nessus 最新版破解教程0x01 Nessus 简介0x02 Nessus 下载0x03 Nessus 安装0x04 更新漏洞库0x05 Nessus 破解0x06 Nessus 使用0x07 注意事项参考文章0x01 Nessus 简介 Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用 Nessus 作为扫描该机…

跟着 gma 学 Python:矢量面文件的空间绘图

得益于 gdal 的强大功能&#xff0c;gma 继承了其对各类栅格/矢量&#xff08;目前支持超过80种矢量文件格式&#xff09;文件的读取支持&#xff0c;并在其基础上进行简化、优化等改造&#xff0c;以便其符合 gma 的整体建库逻辑。   本文基于 gma 定义的矢量读取逻辑和方式…

26 CPP运算符重载

#include <iostream>using namespace std;//非成员函数重载 - class Person { public:Person() {m_score 0;m_name.clear();}void show() {cout << m_name << " " << m_score << endl;}int m_score;string m_name; };//全局重载号 vo…

毕业设计 - 基于SSH码头船只出行及配套货柜码放 管理系统【源码 + 论文】

文章目录前言一、项目设计1. 模块设计2. 实现效果二、部分源码项目源码前言 今天学长向大家分享一个 java web设计项目: 基于SSH码头船只出行及配套货柜码放 管理系统 一、项目设计 1. 模块设计 对于码头日常管理来说&#xff0c;主要是码头船只的管理&#xff0c;码头信息的…

【leetcode.15】三树枝和

题目描述如上 要点分析&#xff1a; 遍历出所有的情况不难&#xff0c;难的是如果和处理重复的结果 纯暴力&#xff0b;检索的话复杂度为n3&#xff0c;最后面的三个测试点会超时 所以这里使用双指针法进行处理&#xff0c;复杂度会变为n2 算法分析&#xff1a; 为了避免…

Java+SSM家庭理财管理系统(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用技术&#xff1a;SSM框架MySQL数据库Tomcat服务器&#xff0c;项目含有源码、文档、配套开发软件、软件安装教程、项目发布教程等 项目功能介绍&#xff1a; 用户分为系统管理员和普通用户两个角色&#xff0c;普通用户可自行注册登录&#xff0c;系统…

【图像处理】Hough变换人眼虹膜定位【含Matlab源码 387期】

⛄一、数字图像处理简介 图像处理基础教程链接 1 【基础教程】基于matlab图像处理&#xff08;表示方法数据结构基本格式类型转换读取点运算代数运算&#xff09;【含Matlab源码 834期】 2 【基础教程】基于matlab图像处理&#xff08;读写显示运算转换变换增强滤波分析统计&a…

计算机毕设Python+Vue学生宿舍管理系统 (程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【遥感科学】第二章 电磁辐射和地物光谱特性

第二章 电磁辐射与地物光谱特征 一、电磁波谱与电磁辐射 1.1 磁波谱 我们说波谱波谱&#xff0c;那么什么是波&#xff0c;什么是谱呢&#xff1f;注意看&#xff0c;这个男人叫小帅 振动的传播称为波&#xff0c;那电磁波又是啥&#xff1f;啥叫电磁振动&#xff1f; 当电…

docker常用命令记录

1.docker加载镜像 sudo docker load --input rknn-toolkit-1.7.3-docker.tar.gz 2.查看镜像 sudo docker images 3.进入docker容器 sudo docker run -t -i --privileged rknn-toolkit:1.7.3 /bin/bash 4.退出容器 eixt 5.查看所有容器 sudo docker ps -a 6.开启容…

截止12.19--之前的再说,就先说一下今天的事

12/19 错怪colab 软链接实现永久 试一下我在ssh传上文件以后&#xff0c;1080卡还能不能看见了&#xff1a;能&#xff0c;得传到data里。可以在ssh上加上 ln -s 找不到GPU是镜像问题 出现找不到显卡的问题 需要换个镜像 所以速速自学docker吧&#xff0c;太被动了 加号做连…

基于AD Event日志识别黄金票据攻击

01、简介黄金票据(Golden Ticket)是基于Kerberos认证的一种攻击方式&#xff0c;常用来做域控权限维持。当攻击者获取到域内krbtgt帐户的SID和HASH&#xff0c;就可以随意伪造域内管理员用户&#xff0c;再加上域帐户krbtgt的密码基本不会更改&#xff0c;即使域管修改了密码&a…

汇编循环指令(汇编统计正负数汇编语言1到100的求和汇编求一组数最大值)

目录 LOOP指令&#xff08;重点掌握&#xff09; LOOPZ/LOOPE指令 LOOPNZ/LOOPNE指令 例题 一&#xff1a;读程序写结果 二&#xff1a;阅读程序段回答问题 三&#xff1a;读程序写结果 四:求100内的数累和 五&#xff1a;统计正数负数零 六&#xff1a;求字节单元中…

03---后端框架搭建

1、创建项目 打开Ider&#xff0c;创建springboot项目。创建页面勾选需要的依赖&#xff0c;自定义包名、存储位置等&#xff0c;然后创建项目pom依赖如下 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>…

jenkins开发相关

1、jenkins 处理系统配置中publish over ssh中的密码 主机信息数据存储在&#xff5e;/.jenkins/jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml文件中。 java后端如果要加密可以通过以下方法实现。 String Password "xxxx" String passwd "pr…

中科方德服务器操作系统虚拟机安装过程记录

没啥技术含量&#xff0c;就是过程中踩了一些坑&#xff0c;我做个记录&#xff0c;方便后续查阅以及其他人参考什么的。 1、新建虚拟机向导---选择典型配置 2、选择&#xff1a;稍后安装客户机操作系统 3、选择客户机操作 系统以及版本&#xff0c;中科方德服务器系统为在安装…