MyBatis Generator - 快速生成 实体类 和 映射文件

news2024/12/22 23:39:59

目录

一、MyBatis Generator 的使用

1.1、生成类和映射文件

1.1.1、在 pom.xml 中引入依赖

1.1.2、根据 configurationFile 标签中配置的路径 创建 generatorConfig.xml 文件

1.1.3、自动生成类 和 映射文件

1.1.4、在 Insert 标签中添加获取主键值的选项

1.1.5、扫描配置:添加 @Mapper 注解 / 添加扫描注解

1.1.6、配置 mybatis

1.1.7、测试


一、MyBatis Generator 的使用


1.1、生成类和映射文件

1.1.1、在 pom.xml 中引入依赖

在 properties 标签中加入版本号.

<mybatis-generator-plugin-version>1.4.1</mybatis-generator-plugin-version>

在 build => plugins 标签中加入如下配置

            <!-- mybatis ⽣成器插件 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>${mybatis-generator-plugin-version}</version>
                <executions>
                    <execution>
                        <id>Generate MyBatis Artifacts</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <!-- 相关配置 -->
                <configuration>
                    <!-- 打开⽇志 -->
                    <verbose>true</verbose>
                    <!-- 允许覆盖 -->
                    <overwrite>true</overwrite>
                    <!-- 配置⽂件路径 -->
                    <configurationFile>
                        src/main/resources/mybatis/generatorConfig.xml
                    </configurationFile>
                </configuration>
            </plugin>

上述配置中需要注意的是 “配置文件路径”,这个路径就是用来生成 实体类和映射文件 配置规则的位置.

1.1.2、根据 configurationFile 标签中配置的路径 创建 generatorConfig.xml 文件

这个文件就是用来描述生成规则的.

根据路径(src/main/resources/mybatis),在 mybatis 目录下创建 generatorConfig.xml 文件.

Ps:下述配置文件中需要修改的有 数据库连接、实体类和映射文件的路径、数据库表名

<?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>
    <!-- 驱动包路径,location中路径替换成⾃⼰本地路径 -->
    <classPathEntry location="D:\class\source\mysql-connector-java-5.1.49.jar"/>

    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!-- 禁⽤⾃动⽣成的注释 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
            <property name="suppressDate" value="true"/>
        </commentGenerator>
        <!-- 连接配置 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3306/javanav_db?
characterEncoding=utf8&amp;useSSL=false"

                        userId="root"

                        password="1111">
        </jdbcConnection>
        <javaTypeResolver>
            <!-- ⼩数统⼀转为BigDecimal -->
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 实体类⽣成位置 -->
        <javaModelGenerator targetPackage="com.example.cyk.model"

                            targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- mapper.xml⽣成位置 -->
        <sqlMapGenerator targetPackage="mapper"

                         targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- mapper 接口⽣成位置 -->
        <javaClientGenerator type="XMLMAPPER"

                             targetPackage="com.example.cyk.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 配置⽣成表与实例, 只需要修改表名tableName, 与对应类名domainObjectName 即
       可-->
        <table tableName="j_article" domainObjectName="Article"

               enableSelectByExample="false"

               enableDeleteByExample="false" enableDeleteByPrimaryKey="false"

               enableCountByExample="false"

               enableUpdateByExample="false">
            <!-- 类的属性⽤数据库中的真实字段名做为属性名, 不指定这个属性会⾃动转换 _ 为
           驼峰命名规则-->
            <property name="useActualColumnNames" value="true"/>
        </table>
        <table tableName="j_article_reply" domainObjectName="ArticleReply"

               enableSelectByExample="false"

               enableDeleteByExample="false" enableDeleteByPrimaryKey="false"

               enableCountByExample="false"

               enableUpdateByExample="false">
            <property name="useActualColumnNames" value="true"/>
        </table>
        <table tableName="j_board" domainObjectName="Board"

               enableSelectByExample="false" enableDeleteByExample="false"

               enableDeleteByPrimaryKey="false" enableCountByExample="false"

               enableUpdateByExample="false">
            <property name="useActualColumnNames" value="true"/>
        </table>
        <table tableName="j_message" domainObjectName="Message"

               enableSelectByExample="false"

               enableDeleteByExample="false" enableDeleteByPrimaryKey="false"

               enableCountByExample="false"

               enableUpdateByExample="false">
            <property name="useActualColumnNames" value="true"/>
        </table>
        <table tableName="j_user" domainObjectName="User"

               enableSelectByExample="false" enableDeleteByExample="false"

               enableDeleteByPrimaryKey="false" enableCountByExample="false"

               enableUpdateByExample="false">
            <property name="useActualColumnNames" value="true"/>
        </table>
    </context>
</generatorConfiguration>

注意:

驱动包路径是自己本地仓库的路径

 

但一定注意!! 需要在非中文的目录下,因此你可以把这个驱动包拷贝出来,放到一个非中文的目录中即可.

1.1.3、自动生成类 和 映射文件

重新加载Maven项⽬,在Plugins节点下出现mybatis-generator,双击运⾏,在对应的目录下⽣成相应的类与映射⽂件:

接着你就可以看到对应的生成了

1.1.4、在 Insert 标签中添加获取主键值的选项

在生成的 xml 文件中,给每一个 insert 标签都添加以下属性:useGeneratedKeys="true" keyProperty="id"

<!-- useGeneratedKeys = true -->
<!-- keyProperty = 主键字段--> 

<!-- 当插⼊⼀条数据后,可以通过user.getId()获取到⾃动⽣成的Id值,如果⽅法中需要⽴即获取Id值,加⼊这个配置 --> 
<insert id="insert" parameterType="com.example.cyk.model.User" 
useGeneratedKeys="true" keyProperty="id" >

Ps:这个选项也可以自动生成,但是不理想(有些问题)

1.1.5、扫描配置:添加 @Mapper 注解 / 添加扫描注解

有两种方式配置扫描 Mapper 接口.

1)给每个 mapper 包下的 mapper 接口都添加 @Mapper 注解.

2)给启动类上 或者 新建一个配置类(有 @Configuration 注解)加上 @MapperScan("com.example.cyk.mapper") 注解.

1.1.6、配置 mybatis

在 yml 文件中配置

mybatis:
  mapper-locations: classpath:mapper/**/*Mapper.xml

1.1.7、测试

@SpringBootTest
public class TestMapper {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void select() {
        User user = userMapper.selectByPrimaryKey(1L);
        System.out.println(user);
    }

}


 

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

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

相关文章

Linux完全卸载PyTorch重装(cuda11.1)

目录 1.命令行输入2.命令行接着输入3.可以看到卸载完后4.下载PyTorch&#xff08;cuda对应11.1&#xff0c;可以通过test_gpu.py的测试&#xff09; 原因&#xff1a;网上看的很多卸载的&#xff0c;并没有把所有跟随PyTorch的包卸载干净&#xff0c;虽然可能后期不会出现较大问…

【计算机操作系统慕课版】第二章课后习题笔记(创作周年纪念版)

一、简答题 (1)什么是前趋图&#xff1f;试画出下面四条语句的前趋图. S1&#xff1a;axy&#xff1b; S2&#xff1a;bz1&#xff1b; S3&#xff1a;ca-b&#xff1b; S4&#xff1a;wc1&#xff1b; 答&#xff1a;前趋图(Precedence Graph)是一个有向无循环图&#xff…

我朋友软件测试月薪5w,跟他聊过之后,才知道差距在哪里!

当我开始工作的时候&#xff0c;年薪50万对于我来说是一个遥不可及的幻想。我认为作为一名普通的软件测试工程师&#xff0c;月薪2w已经是天花板了。然而随着时间的推移和经验的积累&#xff0c;看到越来越多的同行拿到高薪时&#xff0c;我才意识到束缚我薪水的不是行业的天花…

集合迭代器

Iterator迭代器的定义&#xff1a;迭代器&#xff08;Iterator&#xff09;模式&#xff0c;又叫做游标&#xff08;Cursor&#xff09;模式。GOF给出的定义是&#xff0c;提供一种方法访问一个容器&#xff08;container&#xff09;对象中各个元素&#xff0c;而又不需暴露该…

山西电力市场日前价格预测【2023-10-23】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-23&#xff09;山西电力市场全天平均日前电价为232.21元/MWh。其中&#xff0c;最高日前电价为383.23元/MWh&#xff0c;预计出现在18: 30。最低日前电价为0.00元/MWh&#xff0c;预计出…

01、Python 的数据类型

目录 数据类型Python变量具有如下两个特征&#xff1a;输出变量 标识符规则整型四种表示形式浮点数复数 数据类型 使用Python变量 Python的基础类型 Python变量具有如下两个特征&#xff1a; 变量无需声明即可直接赋值&#xff1a;对一个不存在的变量赋值就相当于定义了一个…

十四天学会C++之第九天:内存管理

1. new和delete运算符 new运算符&#xff1a;动态分配内存。delete运算符&#xff1a;释放动态分配的内存。 new运算符&#xff1a;动态分配内存 new运算符的作用是在堆内存中动态分配内存块&#xff0c;并返回指向该内存块的指针。这使得我们能够在程序运行时创建变量&…

短视频如何批量添加水印?实用技巧带你飞

在当今的数字时代&#xff0c;短视频已经成为一种非常流行的内容形式。无论是社交媒体还是视频分享网站&#xff0c;短视频都已经成为了一种非常有吸引力的内容。然而&#xff0c;对于一些拥有大量视频内容的创作者来说&#xff0c;添加水印可能是一项繁琐的任务。本文将介绍如…

沙箱对抗之反沙箱技巧

前言 我们经常会在红蓝对抗中遇到这种场景&#xff0c;离线免杀&#xff0c;但是10分钟又被杀&#xff0c;这就是云查杀的威力&#xff0c;而云查杀可以分为下列两种: 1.静态分析 2.动态分析 静态分析就是分析样本的结构&#xff0c;导入表&#xff0c;等等来判定是否是恶意程…

C语言实现顺序表(图解增删查改+代码)

文章目录 写在前面1. 顺序表的初始化和销毁1.1 顺序表的初始化(SLInit)1.2 顺序表的销毁(SLDestroy) 2. 插入数据2.1 尾插数据(SLPushBack)2.2 头插数据(SLPushFront)2.3 指定位置插入数据(SLInsert) 3. 删除数据3.1 尾删数据(SLPopBack)3.2 头删数据(SLPopFront)3.3 删除指定位…

DDR3笔记 频率配置

可参考 基于FPGA的DDR3设计&#xff08;2&#xff09;DDR3各时钟频率及带宽分析 - 知乎 (zhihu.com) DDR3的时钟频率配置要看两个手册&#xff1a; 1.DDR3器件的手册。 2.开发板芯片的手册 器件 器件名称&#xff1a;MT41J128M16JT-125:K tCK 1.25ns&#xff0c;就可以算出…

冒泡排序应用过程中遇到的问题

冒泡排序思想&#xff1a;相邻的两个数据两两比较&#xff0c;然后按顺序排出 代码展示1&#xff1a; #include<stdio.h>void sort(int arr1[],int sz) {for (int i 0; i < sz-1; i){for (int j i1; j < sz; j){if (arr1[i] > arr1[j]) {int temp 0;temp a…

Wordpress - Xydown独立下载页面插件

Wordpress - Xydown独立下载页面插件&#xff1b; 1.使用ftp将demo.php和download.php上传到网站根目录&#xff08;两个文件中设计网站信息的代码可根据实际情况修改为自己的信息&#xff09; 使用ftp将demo.php和download.php上传到网站根目录&#xff08;两个文件中设计…

消息服务MNS之初见

消息服务MNS 说到消息服务MNS&#xff0c;那么消息服务MNS是什么呢&#xff1f;为什么会有消息服务MNS这款产品的产生呢&#xff1f; 什么是消息服务MNS 消息服务-阿里云消息服务MNS&#xff08;Message Service&#xff09;是一种高效、可靠、安全、便捷和可弹性扩展的分布…

GB28181学习(十)——视音频文件下载

要求 SIP服务器接收到媒体接收者发送的视音频文件下载请求后向媒体流发送者发送媒体文件下载命令&#xff0c;媒体流发送者采用RTP将视频流传输给媒体流接收者&#xff0c;媒体流接收者直接将视频流保存为媒体文件&#xff1b;媒体流接收者或SIP服务器可通过配置查询等方式获取…

算法模板之双链表图文详解

文章目录 &#x1f4cb;前言一. ⛳️使用数组模拟双链表讲解1.1 &#x1f514;为什么我们要使用数组去模拟双链表&#xff1f;1.2 &#x1f514;用数组模拟实现双链表1.2.1 &#x1f47b;整体框架说明1.2.2 &#x1f47b;双链表查找和修改1.2.3 &#x1f47b;双链表插入结点1.2…

云数据仓库实践:AWS Redshift在大数据储存分析上的落地经验分享

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

【RNA structures】RNA-seq 分析: RNA转录的重构和前沿测序技术

文章目录 RNA转录重建1 先简单介绍一下测序相关技术2 Map to Genome Methods2.1 Step1 Mapping reads to the genome2.2 Step2 Deal with spliced reads2.3 Step 3 Resolve individual transcripts and their expression levels 3 Align-de-novo approaches3.1 Step 1: Generat…

C语言------接续符和转义符

接续符和转义符--------- \ C语言中的\符号可以表示接续符和转义符。 C语言中的接续符( \ )放在一行代码的结尾&#xff0c;可以将下一行的内容提到这一行来。 \符号还有另一个作用 — 转义符。 C语言中的转义符()主要用于表示无回显字符&#xff0c;也可用于表示常规字符。 …

原型链继承

方式一&#xff1a;原型链继承 1.套路&#xff1a; &#xff08;1&#xff09;定义父类型构造函数 &#xff08;2&#xff09;给父类型的原型添加方法 &#xff08;3&#xff09;定义子类型的构造函数 &#xff08;4&#xff09;创建父类型的对象赋值给子类型的原型 &…