MyBatis(十四)MyBatis的逆向工程

news2024/11/15 6:15:16

前言、

所谓的逆向工程是:根据数据库表逆向生成Java的pojo类,SqlMapper.xml文件,以及Mapper接口类等。

要完成这个工作,需要借助别人写好的逆向工程插件

思考:使用这个插件的话,需要给这个插件配置哪些信息?

  • pojo类名、包名以及生成位置。
  • SqlMapper.xml文件名以及生成位置。
  • Mapper接口名以及生成位置。
  • 连接数据库的信息。
  • 指定哪些表参与逆向工程。
  • ......

一、逆向工程配置与生成

第一步、基础环境准备

新建模块:mybatis-012-generator

打包方式:jar

第二步、在pom中添加逆向工程插件

<!--定制构建过程-->
<build>
  <!--可配置多个插件-->
  <plugins>
    <!--其中的一个插件:mybatis逆向工程插件-->
    <plugin>
      <!--插件的GAV坐标-->
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-maven-plugin</artifactId>
      <version>1.4.1</version>
      <!--允许覆盖-->
      <configuration>
        <overwrite>true</overwrite>
      </configuration>
      <!--插件的依赖-->
      <dependencies>
        <!--mysql驱动依赖-->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.30</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>

第三步:配置generatorConfig.xml

该文件名必须叫做: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>
    <!--
        targetRuntime有两个值:
            MyBatis3Simple:生成的是基础版,只有基本的增删改查。
            MyBatis3:生成的是增强版,除了基本的增删改查之外还有复杂的增删改查。
    -->
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!--防止生成重复代码-->
        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>
      
        <commentGenerator>
            <!--是否去掉生成日期-->
            <property name="suppressDate" value="true"/>
            <!--是否去除注释-->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--连接数据库信息-->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/powernode"
                        userId="root"
                        password="root">
        </jdbcConnection>

        <!-- 生成pojo包名和位置 -->
        <javaModelGenerator targetPackage="com.powernode.mybatis.pojo" targetProject="src/main/java">
            <!--是否开启子包-->
            <property name="enableSubPackages" value="true"/>
            <!--是否去除字段名的前后空白-->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- 生成SQL映射文件的包名和位置 -->
        <sqlMapGenerator targetPackage="com.powernode.mybatis.mapper" targetProject="src/main/resources">
            <!--是否开启子包-->
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- 生成Mapper接口的包名和位置 -->
        <javaClientGenerator
                type="xmlMapper"
                targetPackage="com.powernode.mybatis.mapper"
                targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!-- 表名和对应的实体类名-->
        <table tableName="t_car" domainObjectName="Car"/>

    </context>
</generatorConfiguration>

第四步:运行插件

二、测试逆向工程生成的是否好用

第一步:环境准备

  • 依赖:mybatis依赖、mysql驱动依赖、junit依赖、logback依赖
  • jdbc.properties
  • mybatis-config.xml
  • logback.xml

第二步:编写测试程序

package com.powernode.mybatis.test;

import com.powernode.mybatis.mapper.CarMapper;
import com.powernode.mybatis.pojo.Car;
import com.powernode.mybatis.utils.SqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

/**
 * @author wuw
 * @since 2023-04-21 10:07:16
 */
public class CarMapperTest {

    @Test
    public void selectAllTest(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        CarMapper mapper = sqlSession.getMapper(CarMapper.class);
        List<Car> cars =  mapper.selectAll();
        cars.forEach(car -> System.out.println(car));
        sqlSession.close();
    }
@Test
    public void deleteByPrimaryKey(){
    SqlSession sqlSession = SqlSessionUtil.openSession();
    CarMapper mapper = sqlSession.getMapper(CarMapper.class);
    int count =  mapper.deleteByPrimaryKey(8L);
    System.out.println(count);
    sqlSession.commit();
    sqlSession.close();
}

}

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

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

相关文章

2023年淮阴工学院五年一贯制专转本退役士兵大学语文考试大纲

2023年淮阴工学院五年一贯制专转本退役士兵大学语文考试大纲 一、考试目标 淮阴工学院五年一贯制高职专转本入学考试秘书学专业《大学语文》考试是我校为招收五年一贯制高职专转本学生设置的具有选拔性质的考试科目。其目的是科学、公平、有效地测试考生是否具备攻读秘书学本…

【论文总结】V-Shuttle:可扩展和语义感知的 Hypervisor 虚拟设备模糊测试

介绍 这是来自2021 CCS的一篇论文&#xff0c;作者有GaoningPan, Xingwei Lin, Xuhong Zhang, Yongkang Jia, Shouling Ji, Chunming Wu, Xinlei Ying, Jiashui Wang, Yanjun Wu。该论文提出V-shuttle的新框架来执行管控程序的模糊测试&#xff0c;该框架执行可扩展和语义感知…

LDR6328 PD诱骗(取电)芯片概述,支持定制化取电

PD充电需要在供电端&#xff08;充电器&#xff09;和受电端&#xff08;产品上&#xff09;都要有协议通信&#xff0c;一般充电器内有PD供电协议芯片&#xff0c;产品上有PD协议受电芯片&#xff0c;两者连接后会进行通信握手&#xff0c;连接成功后充电器才会输出需要的电压…

银行数字化转型导师坚鹏:商业银行对公业务数字化风控

商业银行对公业务数字化风控 课程背景&#xff1a; 数字化背景下&#xff0c;很多银行存在以下问题&#xff1a; 不清楚商业银行数字化风控发展现状&#xff1f; 不清楚对公业务数字化风控工作如何开展&#xff1f; 不知道零售业务数字化风控工作如何开展&#xff1f; …

探索五大机器学习技术及其应用

没有一种机器学习算法可以解决所有类型的机器学习问题。机器学习任务可能千差万别&#xff0c;算法的选择将取决于数据的大小、维数和稀疏性等因素。目标变量、数据的质量以及特征内部以及特征与目标变量之间存在的相互作用和统计关系。 在本文中&#xff0c;我将提供机器学习…

【NPM】npm上传包

必须使用npm镜像&#xff0c;不能使用淘宝镜像 查看当前的镜像 npm config get registry切换镜像为npm &#xff08;不能使用淘宝镜像&#xff09; npm config set registry https://registry.npmjs.org在要发布的包文件目录执行 发布为公共包 npm publish --access publi…

【基于准交叉双边滤波:医学图像】

Medical image fusion based on quasi-cross bilateral filtering &#xff08;基于准交叉双边滤波的医学图像融合&#xff09; 图像融合技术是利用特定的算法从多幅图像中提取并融合特征&#xff0c;然后将它们组合成一幅图像的方法。然而&#xff0c;目前的图像融合方法大多…

学生管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a;​​​​​​​https://download.csdn.net/download/qq_50954361/87700422 …

react-9 函数式写法rsf,配合HOOKS基础钩子函数

函数组件和类组件区别&#xff1a; 1.函数组件中没有this 2.函数组件无需继承 3.函数组件默认没有状态&#xff0c;想要使用组件状态必须通过 HOOK 函数引入 4.函数组件默认没有生命周期函数 5.函数组件的渲染&#xff0c;只需要一次函数调用即可 useState &#xff1a;用…

广联转债上市价格预测

广联转债 基本信息 转债名称&#xff1a;广联转债&#xff0c;评级&#xff1a;A&#xff0c;发行规模&#xff1a;7.0亿元。 正股名称&#xff1a;广联航空&#xff0c;今日收盘价&#xff1a;31.09元&#xff0c;转股价格&#xff1a;32.32元。 当前转股价值 转债面值 / 转股…

软件测试之测试分类

文章目录 按测试对象分界面测试可靠性测试容错性测试文档测试兼容性测试易用性测试安装卸载测试安全测试性能测试内存泄露测试弱网测试 按代码的查看情况黑盒测试白盒测试灰盒测试 按开发阶段单元测试集成测试系统测试回归测试冒烟测试验收测试 测试的大致分类&#xff1a; 下…

【从零开始学Skynet】实战篇《球球大作战》(十四):agent跨服务器版

至此&#xff0c;我们已完成了《球球大作战》的绝大部分功能&#xff0c;只剩下完 善agent &#xff0c;让它和 scene 服务联动了。 1、多个模块 一般而言&#xff0c;代理服务会承载很多系统&#xff0c;比如邮件、成就等&#xff0c;此处涉及的代码较多&#xff0c;容易混 乱…

<Windows> 《VMware各类问题及解决方法》(持续更新...)

《VMware各类问题》 1 虚拟机无法获取权限2 虚拟机开机无法启动原因2.1 可能原因12.2 可能原因2 1 虚拟机无法获取权限 出现原因&#xff1a; 在虚拟机运行时&#xff0c;一次非正常关机。导致虚拟机出现此错误。此虚拟机似乎正在使用中。 解决方法&#xff1a; 方法一&#xf…

华为电脑如何录屏?2个方法教您快速录制!

案例&#xff1a;如何在华为电脑上进行电脑屏幕录制&#xff1f; 【我是一名老师&#xff0c;我想在电脑上录制一段教学视频&#xff0c;但是我不知道如何录制我的电脑屏幕。有没有哪位朋友知道华为电脑怎么录屏&#xff1f;可以分享一下方法吗&#xff1f;】 华为电脑是目前…

【Vue】学习笔记-Vue生命周期

引出生命周期 生命周期 a.又名生命周期回调函数、生命周期函数、生命周期钩子 b.是什么&#xff1a;vue 在关键时刻帮助我们调用一些特殊名称的函数 c.生命周期函数的名字不可更改&#xff0c;但函数的具体内容是程序员根据需求编写的 d.生命周期函数中的this指向是vm或组件实…

Win10 开机输入密码后登入桌面就黑屏,只有鼠标可以移动, 打不开任务管理器,不用重装系统怎么修复?(已解决)十四个解决参考方案

环境: Win10 专业版21H2 戴尔5590笔记本 Win11PE 系统安装U盘 USB固态硬盘盒 闪迪16G U盘 DiskGenius_Pro_v5.4.3 问题描述: Win10开机输入密码登入桌面后突然黑屏,只有鼠标可以移动, 打不开任务管理器,按住ctrl shift esc鼠标会有蓝色圈转动,但是不会弹出任务管理…

Elasticsearch——文档操作

新增文档 POST /索引库名/_doc/文档id { "字段1": "值1", "字段2": "值2", "字段3": { "子属性1": "值3", "子属性2": "值4" }, // ... } 查询文档 GET /索引库名/_doc/文档id 删除…

Transactional事务失效场景汇总

文章目录 1、前言2、失效场景2.1、Service没有被Spring管理2.2、事务方法被final、static关键字修饰2.3、同一个类中&#xff0c;方法内部调用2.4、方法的访问权限不是public2.5、数据库的存储引擎不支持事务2.6、Transactional 注解配置错误2.7、使用了错误的事务传播机制2.8、…

elasticsearch与mysql数据同步

目录 数据同步一.思路分析1.同步调用2.异步通知3.监听binlog4.选择 二.实现数据同步1.思路2.导入demo3.声明交换机、队列3.1引入依赖3.2 配置文件3.3 声明队列交换机名称3.4 声明队列交换机 4.发送MQ消息4.1 事务配置类4.2 service 代码 5.接收MQ消息 数据同步 elasticsearch中…

数据分析----IQR(Interquartile Range)四分位距的理解与应用及Python实现

【原文链接】数据分析----IQR&#xff08;Interquartile Range&#xff09;四分位距的理解与应用及Python实现 一、IQR&#xff08;Interquartile Range&#xff09;四分位距的含义 1.1 IQR的官方定义 IQR 是用于标记离群值的另一种稳健方法。用于检测离群值的 IQR&#xff…