NO.08 MyBatis创建逆向工程

news2024/11/17 5:22:12

目录

1、前言

2、添加依赖和插件

 3、创建MyBatis的核心配置文件

 4、创建逆向工程的配置文件

 5、执行MBG插件的generate目标


1、前言

工程的创建有正向工程和逆向工程之分。正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表,如Hibernate是支持正向工程的。 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源: Java实体类 Mapper接口 Mapper映射文件,如MyBatis支持逆向工程。

本篇以t_minister表、t_dutie表为例,表结构可查看NO.06 自定义映射resultMap_qq_46053741的博客-CSDN博客

2、添加依赖和插件

 在pom.xm文件中添加一下依赖:mysql-connector-java、mybatis-generator-core、junit、log4j,在pom.xml文件中添加build标签,在build标签中添加plugins子标签,plugins标签中主要是添加构建过程中用到的插件;在plugins标签中添加子标签plugin子标签,主要添加创建做成中用到的具体插件,插件主要有以下几个:mybatis-generator-maven-plugin、mybatis-generator-core、mysql-connector-java。

下面是pom.xml配置文件的详细内容

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.review.mybatis</groupId>
  <artifactId>review_mbg</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>Archetype - review_mbg</name>
  <url>http://maven.apache.org</url>
  <packaging>jar</packaging>

  <dependencies>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.37</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.0</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.12</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <!-- 控制Maven在构建过程中相关配置 -->
  <build>
    <!-- 构建过程中用到的插件 -->
    <plugins>
      <!-- 具体插件,逆向工程的操作是以构建过程中插件形式出现的 -->
      <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.0</version>
        <!-- 插件的依赖 -->
        <dependencies>
          <!-- 逆向工程的核心依赖 -->
          <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.0</version>
          </dependency>
          <!-- MySQL驱动 -->
          <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>

 3、创建MyBatis的核心配置文件

在配置核心配置文件之前需要创建jdbc.properties文件,配置数据库连接信息。

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/review
jdbc.username=root
jdbc.password=123456789

配置文件详细内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!--
        MyBatis核心配置文件中的标签必须要按照指定的顺序配置:
        properties?,settings?,typeAliases?,typeHandlers?,
        objectFactory?,objectWrapperFactory?,reflectorFactory?,
        plugins?,environments?,databaseIdProvider?,mappers?
    -->

    <!--引入properties文件,此后就可以在当前文件中使用的方式访问value-->
    <properties resource="jdbc.properties"/>

    <!--
        typeAliases:设置类型别名,即为某个具体的类型设置一个别名
        在MyBatis的范围中,就可以使用别名表示一个具体的类型
    -->
    <typeAliases>
        <!--
            type:设置需要起别名的类型
            alias:设置某个类型的别名
        -->
        <!--        <typeAlias type="com.review.mybatis.Pojo.User" alias="abc"></typeAlias>-->
        <!--        若不设置alias,当前的类型拥有默认的别名,即类名且不区分大小写-->
        <!--        <typeAlias type="com.review.mybatis.pojo.User"></typeAlias>-->
        <!--通过包设置类型别名,指定包下所有的类型将全部拥有默认的别名,即类名且不区分大小写-->
        <package name="com.review.mybatis.pojo"/>
    </typeAliases>


    <!--    配置连接数据库的环境-->
<!--
    environments:配置连接数据库的环境
    属性:
    default:设置默认使用的环境的id
-->
    <environments default="development">
        <environment id="development">
<!--
                transactionManager:设置事务管理器
                属性:
                type:设置事务管理的方式
                type="JDBC|MANAGED"
                JDBC:表示使用JDBC中原生的事务管理方式
                MANAGED:被管理,例如Spring
-->
            <transactionManager type="JDBC"/>
<!--
                dataSource:设置数据源
                属性:
                type:设置数据源的类型
                type="POOLED|UNPOOLED|JNDI"
                POOLED:表示使用数据库连接池
                UNPOOLED:表示不使用数据库连接池
                JNDI:表示使用上下文中的数据源
-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>

        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/review"/>
                <property name="username" value="root"/>
                <property name="password" value="123456789"/>
            </dataSource>
        </environment>
    </environments>
<!--    引入mybatis的映射文件-->
<!--
    以包的方式引入映射文件,但是必须满足两个条件:
    1、mapper接口和映射文件所在的包必须一致
    2、mapper接口的名字和映射文件的名字必须一致
-->
    <mappers>
<!--        <mapper resource="mappers/MinisterMapper.xml"/>-->
<!--
        以包的方式引入映射文件,但是必须满足两个条件:
        1、mapper接口和映射文件所在的包必须一致
        2、mapper接口的名字和映射文件的名字必须一致
-->
        <package name="com.review.mybatis.mapper"/>
    </mappers>
</configuration>

 配置文件中typeAliases标签中的package子标签表示以包设置类型别名,指定包下所有的类型将全部拥有默认的别名,即类名且不区分大小写,name属性的value值是实体类包的路径。

mapper标签中的package子标签表示以包的方式引入映射文件,但是必须满足两个条件:1、mapper接口和映射文件所在的包必须一致;2、mapper接口的名字和映射文件的名字必须一致。name属性的value值表示映射文件所在包的路径。

 4、创建逆向工程的配置文件

 逆向工程配置文件名必须为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: 生成基本的CRUD(清新简洁版)
MyBatis3: 生成带条件的CRUD(奢华尊享版)
-->
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!-- 数据库的连接信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/review"
                        userId="root"
                        password="123456789">
        </jdbcConnection>
        <!--
            targetPackage:指定生成targetProject下的路径
            targetProject:指定生成的位置
        -->
        <!-- javaBean的生成策略-->
        <javaModelGenerator targetPackage="com.review.mybatis.pojo"
                            targetProject=".\src\main\java">
            <!--
                enableSubPackages设置是否能够使用子包,默认值为true,可以将包名中的‘.’解析为一个一个目录;
                如果为false,则无法解析包名中的‘.’,将带有'.'的包路径看作一个包。
             -->
            <property name="enableSubPackages" value="true"/>
            <!--
                trimStrings起截取作用,将表中的字段名前后的空格去除。
            -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- SQL映射文件的生成策略 -->
        <sqlMapGenerator targetPackage="com.review.mybatis.mapper"
                         targetProject=".\src\main\resources">
            <!--
                enableSubPackages:设置是否适用子包。
            -->
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- Mapper接口的生成策略 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.review.mybatis.mapper" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 逆向分析的表 -->
        <!-- tableName:指定需要逆向生成的表
            tableName设置为*号时,可以对应所有表,此时不写domainObjectName -->
        <!-- domainObjectName:指定生成出来的实体类的类名 -->
        <table tableName="t_minister" domainObjectName="Minister"/>
        <table tableName="t_dutie" domainObjectName="Dutie"/>
    </context>
</generatorConfiguration>

 5、执行MBG插件的generate目标

 配置完generatorConfig文件后,需要执行generate插件生成逆向工程。生成逆向工程过程如下图,在maven仓库中找到当前工程下的mybatis-generator,双击mybatis-generator下的mybatis-generator:generate即可生成。

 

 注意:如果当前工程main目录下只有resource目录,没有java目录,需手动创建java目录。

最终生成逆向工程的结果图:

 

 

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

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

相关文章

Vue3+Pinia+Koa+Three.js 全栈电商项目总结复盘

前言 前几天一个朋友去义乌旅游&#xff0c;带回来很多小商品&#xff0c;就是一整个物美价廉&#xff0c;但是为什么线下购物和网购有的时候差别这么大&#xff08;网购经常要退换货啊&#x1f62d;&#x1f62d;&#x1f62d;&#xff09;&#xff0c;为此我萌生了一个想法&…

SQL注入之宽字节注入

文章目录 宽字节注入是什么&#xff1f;注入练习让转义符失效联合查询 代码审计 宽字节注入是什么&#xff1f; 宽字节注入准确来说不是注入手法&#xff0c;而是另外一种比较特殊的情况。宽字节注入的目的是绕过单双引号转义。 宽字节注入是一种绕过单双引号转义的手段&#x…

数学——七桥问题——图论

当涉及数学&#xff0c;有很多不同的话题可以讨论。你是否有特定的数学领域、概念或问题想要了解更多&#xff1f;以下是一些常见的数学领域和主题&#xff0c;你可以选择一个或者告诉我你感兴趣的具体内容&#xff0c;我将很乐意为你提供更多信息&#xff1a; 代数学&#xff…

嵌入式Linux开发实操(十):ADC接口开发

#前言 ADC就是模数转换,可以用来接一些模拟量设备,所谓模拟量就是波形不是方波而是各种包络形状的波形的信号,比如电压、电流等电信号或压力、温度、湿度、位移、声音等非电信号,ADC就是将这些信号转换为数字方波信号,以便于信息传递的。 #ADC硬件设计 key按键连接了AD…

高学历就不会“造假”?

一直以来&#xff0c;学历都是职场的敲门砖&#xff0c;也是一个门槛。对企业的雇佣决策而言&#xff0c;学历有着重要的参考价值。 但是总有一小部分求职者&#xff0c;存在侥幸心理&#xff0c;想凭借假学历升职加薪、牟取利益&#xff0c;给企业带来不少的潜在用工风险。倒…

服务器Linux系统配置mysql数据库主从自动备份

服务器Linux系统配置mysql数据库主从自动备份 当数据内容越来越多的时候&#xff0c;数据库也变得越来越大了。如果不小心误删了&#xff0c;或者被黑主机了&#xff0c;那就什么都没有了。所以数据库的数据怎么能让它不丢失做到万无一失变得尤为重要&#xff01; 我是艾西&a…

(动态规划) 剑指 Offer 47. 礼物的最大价值 ——【Leetcode每日一题】

❓ 剑指 Offer 47. 礼物的最大价值 难度&#xff1a;中等 在一个 m * n 的棋盘的每一格都放有一个礼物&#xff0c;每个礼物都有一定的价值&#xff08;价值大于 0&#xff09;。 你可以从棋盘的左上角开始拿格子里的礼物&#xff0c;并每次向右或者向下移动一格、直到到达棋…

【应用层】网络基础 -- HTTP协议

再谈协议HTTP协议认识URLurlencode和urldecodeHTTP协议格式HTTP的方法HTTP的状态码HTTP常见HeaderHTTP周边会话保持 再谈协议 协议是一种 “约定”. socket api的接口&#xff0c;在读写数据时&#xff0c;都是按 “字符串” 的方式来发送接收的(tcp是以字节流的方式发送的&am…

排序—数据结构

文章目录 1.前置知识1.1稳定性1.2内部排序和外部排序1.3是不是比较的排序 2.直接插入排序2.1思想2.2实现2.3时间复杂度和空间复杂度、稳定性 3.希尔排序3.1思想3.2实现3.3时间复杂度和空间复杂度、稳定性 4.选择排序4.1思想4.2实现4.3时间复杂度和空间复杂度、稳定性 5.堆排序5…

基于卷积神经网络的种子等级识别

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 基于GUI的卷积神经网络和长短期神经网络的语音识别系统 代码下载链接:基于MATLABGUI编程的卷积神经网络和长短期神经网络语音识别系统…

【python零基础入门学习】python基础篇(一)

python基础学习 官方: www.python.org&#xff0c;自行安装&#xff0c;linux上有自带python&#xff0c;win自行安装。 [studentroom9pc01 05]$ python --version Python 2.7.5 #创建虚拟环境&#xff1a; [rootroom9pc01 bin]# pwd /root/nsd1907/bin [rootroom9pc01 bin]…

高质量编程与性能调优实践 性能分析工具pprof

01 高质量编程 1.1 简介 什么是高质量 ——编写的代码能够达到正确可靠、简洁清晰的目标可称之为高质量代码 • 各种边界条件是否考虑完备 • 异常情况处理&#xff0c;稳定性保证 • 易读易维护 编程原则 实际应用场景千变万化&#xff0c;各种语言的特性和语法各不相同 但是高…

1267. 统计参与通信的服务器

这里有一幅服务器分布图&#xff0c;服务器的位置标识在 m * n 的整数矩阵网格 grid 中&#xff0c;1 表示单元格上有服务器&#xff0c;0 表示没有。 如果两台服务器位于同一行或者同一列&#xff0c;我们就认为它们之间可以进行通信。 请你统计并返回能够与至少一台其他服务…

浪涌保护器防雷应用的行业解决方案

浪涌保护器SPD是一种用于防止电力系统或电子设备受到雷击或其他暂态过电压的损坏的装置。它可以有效地限制或分流过电压&#xff0c;保护被保护设备的安全和正常运行。浪涌保护器在各个行业领域都有广泛的应用&#xff0c;地凯科技将介绍浪涌保护器的主要应用领域&#xff0c;以…

threejs纹理加载(二)

通过threejs提供的加载器我们去加载一些贴图作为几何体的纹理&#xff0c;非常方便。我们以本地一张图片作为例子来实现这个效果&#xff1a; <template><div></div> </template> <script setup> import { ref } from "vue";import …

C++ 编译报错“jump to label”

C 编译报错“jump to label” 分析解决方法如何在Eclipse中添加编译选项 分析 void func() {int a 0;a;goto label; label:int b 0;return; }这样的代码是有问题的&#xff0c;因为C编译规则中&#xff0c;不允许goto后面还有新的变量声明。 解决方法 将所有变量声明放到第…

LTD240次升级 | 栏目介绍可在官微中心管理 • 移动分享页可显示产品图文参数

1、新增一种自定义内容数据类型&#xff0c;可用于服务特色等版块展示 2、Android版App优化首页内容排序 3、新增一款导航模块和一款轮播模块 4、移动分享页支持产品图文参数 5、已知问题修复与优化 01 官微中心 1) 新增自定义内容类型数据管理功能 本次升级中&#xff0c;新…

卡尔曼滤波学习笔记

Kalman Filter Ⅰ、直观理解1、描述2、例子 Ⅱ、适用范围1、线性系统2、噪声服从高斯分布 Ⅲ、相关公式1、原始公式2、预测公式3、更新公式4、初值赋予5、总结 Ⅳ、应用例子Ⅴ、代码实现Ⅵ、公式理解1、协方差矩阵的理解1.1 协方差1.2 协方差矩阵1.3、相关数学公式 2、状态方程…

实例043 如何实现Office助手

实例说明 用过Office的人都知道&#xff0c;Office助手是一个非常漂亮的小工具&#xff0c;有了它&#xff0c;即使对Office不太熟悉的用户也可以操作自如。本实例使用C#制作了一个类似Office助手的程序&#xff0c;实例效果如图1.44所示。 技术要点 要实现Office助手效果&a…