当前位置: 首页 > news >正文

基于 Maven 的 MyBatis 逆向工程

关于每篇博文的浪漫主义

在这里插入图片描述

什么是逆向工程?

编码代码时候,pojo、mapper接口以及mapper文件,实现起来没有什么难度,但是需要很大工作量(大多都是一些重复性代码),我们借助逆向工程自动生成pojo、mapper接口以及mapper文件。

什么是MyBatis?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC
代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

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

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

基本原理

操作

我们新建一个maven项目,然后在pom.xml中引入依赖。
在这里插入图片描述

pom.xml中相关代码

<!-- 依赖MyBatis核心包 -->
<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.7</version>
    </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.2</version>
                </dependency>
                    
                <!-- 数据库连接池 -->
                <dependency>
                    <groupId>com.mchange</groupId>
                    <artifactId>c3p0</artifactId>
                    <version>0.9.2</version>
                </dependency>
                    
                <!-- MySQL驱动 -->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.8</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

2、MBG配置文件
在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>
    <!--
            targetRuntime: 执行生成的逆向工程的版本
                    MyBatis3Simple: 生成基本的CRUD(清新简洁版)
                    MyBatis3: 生成带条件的CRUD(奢华尊享版)
     -->
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!-- 数据库的连接信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis-example"
                        userId="root"
                        password="123456">
        </jdbcConnection>
        <!-- javaBean的生成策略-->
        <javaModelGenerator targetPackage="com.zengchuiyu.mybatis.entity" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- SQL映射文件的生成策略 -->
        <sqlMapGenerator targetPackage="com.zengchuiyu.mybatis.mapper"  targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        <!-- Mapper接口的生成策略 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.zengchuiyu.mybatis.mapper"  targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
        <!-- 逆向分析的表 -->
        <!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName -->
        <!-- domainObjectName属性指定生成出来的实体类的类名 -->
        <table tableName="users" domainObjectName="User"/>
    </context>
</generatorConfiguration>

注意:自己配置具体的信息,如数据库连接、包名、对应的表

3、执行MBG插件的generate目标
在这里插入图片描述

4、效果

在这里插入图片描述
在这里插入图片描述

救救就学到这里,博主的文章为什么没人看,虽然是抄作业吧,但我也是仔仔细细过了一遍的
提示:对于这篇学习笔记就暂时到这了,兄弟们加油
对于这篇学习笔记就暂时到这了,兄弟们加油

从现在做起,坚持下去,一天进步一小点,不久的将来,你会感谢曾经努力的你!

如果又出错的,请各位友友指正。

请添加图片描述

新人报到,各位友友们,给我个三联(点赞,关注,收藏)

相关文章:

  • 在阿里干了6年自动化测试,30岁即将退休的我,告诉你自动化测试工程师有多吃香...
  • 3.接口
  • LabVIEW-数据采集
  • Django全家桶
  • 内网渗透 Metasploit(MSF)基础使用
  • 机器学习笔记 - 使用TensorFlow Lite从头创建模型
  • 直流信号隔离采样
  • 锐捷——RIP基础配置
  • 一文搞懂【知识蒸馏】【Knowledge Distillation】算法原理
  • 啃完这些 Spring 知识点,我竟吊打了阿里面试官(附面经 + 笔记)
  • Java集合List接口详解——含源码分析
  • 自动化测试怎么做?python自动化测试断言详细实战代码(看这一篇就够了)
  • 100天精通Python(数据分析篇)——第61天:Pandas.to_datetime函数(处理时间)
  • C#多线程学习总结
  • 网络安全漏洞原理利用与渗透
  • avalon2.2的VM生成过程
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Leetcode 27 Remove Element
  • Linux各目录及每个目录的详细介绍
  • python_bomb----数据类型总结
  • spark本地环境的搭建到运行第一个spark程序
  • vue 配置sass、scss全局变量
  • vue2.0项目引入element-ui
  • 诡异!React stopPropagation失灵
  • 开源地图数据可视化库——mapnik
  • 什么是Javascript函数节流?
  • 探索 JS 中的模块化
  • Python 之网络式编程
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • #每日一题合集#牛客JZ23-JZ33
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (4)(4.6) Triducer
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (黑马C++)L06 重载与继承
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (离散数学)逻辑连接词
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (四)Controller接口控制器详解(三)
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)visual stdio 书签功能介绍
  • (转)人的集合论——移山之道
  • (转载)(官方)UE4--图像编程----着色器开发
  • ***测试-HTTP方法
  • .NET开发者必备的11款免费工具
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .pyc文件是什么?
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @ConditionalOnProperty注解使用说明
  • @EnableWebMvc介绍和使用详细demo
  • @Not - Empty-Null-Blank
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?