springboot如何自动生成mybatis映射文件、dao、pojo层文件?

news2024/11/27 4:17:02

背景:以前一直是直接cv一个项目中现成的xml文件,然后再去自己配置mapper等数据。自己准备做一个单独的例子试一下。

步骤1:在pom.xml文件中插入mybatis-generator插件,这里选的版本是1.3.2,然后指定的generator文件是在resource下的generator文件下的generatorConfig.xml文件下,这个文件是自己创造的。会让这个插件根据这个文件来创建各种文件。

   <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>

                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.27</version>
                        <scope>runtime</scope>
                    </dependency>
                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.3.2</version>
                    </dependency>
                </dependencies>
            </plugin>

然后创建该文件,复制以下的文件内容到该文件中,并对其进行相应修改:

<?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>
    <!-- jdbc的jar包位置,插件需要连接数据库 -->
    <!--location存放绝对路径-->
    <classPathEntry location="lib/mysql-connector-java-8.0.22.jar"/>


    <!--id随便起,版本用的是MyBatis3-->
    <context id="default" targetRuntime="MyBatis3">
        <!-- 是否去除自动生成的注释-->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--数据库连接参数-->
        
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://192.168.157.128:3306/KH?characterEncoding=utf-8&amp;serverTimezone=Asia/Shanghai"
                        userId="root"
                        password="123456">
        </jdbcConnection>

        <!-- 类型处理器,在数据库类型和java类型之间的转换控制-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!--pojo类的生成-->
        <!-- targetProject:JAVA类路径 targetProject:生成的POJO类的包-->
        <!--com.first.pojo路径需要自己创建,即在src/main/java下创建-->
        <javaModelGenerator targetProject="src/main/java" targetPackage="com.example.mybatis.pojo">
            <!-- 是否生成子包,即pojo下创建javaBean类时是否再建个包 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 设置是否在getter方法中,对String类型字段调用trim()方法,即把两边的空格去掉 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--映射文件生成-->
        <!-- targetProject:配置文件路径 targetPackage:生成映射文件的位置 -->
        <!--com.first.mapper路径也需要自己创建,即在src/main/resources下创建,且必须一层一层创建-->
        <sqlMapGenerator targetProject="src/main/resources" targetPackage="mappers">
            <!-- 是否生成子包 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!--持久层接口包生成-->
        <!-- targetPackage:JAVA类路径 targetProject:生成的持久层接口包 -->
        <!--com.first.mapper路径也需要自己创建,即在src/main/java下创建-->
<!--        <javaClientGenerator targetProject="src/main/java" targetPackage="com.example.mybatis.service" type="XMLMAPPER">-->
        <javaClientGenerator targetProject="src/main/java" targetPackage="com.example.mybatis.mapper" type="XMLMAPPER">
            <!-- 是否生成子包 -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <!-- 数据库表,表名不要和其他库中的表名一样 -->
<!--        <table tableName="player_accounts"></table>-->
        <table tableName="player_accounts" domainObjectName="PlayerAccounts" enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
            <property name="useActualColumnNames" value="false"/>
            <!-- 数据库表主键 -->
            <generatedKey column="id" sqlStatement="Mysql" identity="true"/>
        </table>
    </context>
</generatorConfiguration>

上面的配置中有下面几个需要修改的地方:

<classPathEntry location="lib/mysql-connector-java-8.0.22.jar"/>

这个的mysql的jar版本要改为自己使用的,然后要在自己设置的maven的repository中找到mysql-connector-java-xxxxxx.jar这个jar包,放到项目的根目录下的一个文件夹中,我这里创建了一个lib文件夹并放到里面,所以这里设置的是lib/mysql-xxxxxxxxxxx。

第二个要改的地方是:

<!--数据库连接参数-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                connectionURL="jdbc:mysql://192.168.157.128:3306/KH?characterEncoding=utf-8&amp;serverTimezone=Asia/Shanghai"
                userId="root"
                password="123456">
</jdbcConnection>

这里改为自己的数据库连接的参数。

第三个要改的地方是:

<javaTypeResolver>
    <property name="forceBigDecimals" value="false"/>
</javaTypeResolver>

这个处理数据库中的DECIMAL和NUMERIC类型,设置为true就会将其映射为java.math.BigDecimal类型,如果设置为false就会先判断是否有其他的数据类型可以满足这个数据,如果有就会优先另外的数据类型而不是BigDecimal。

第四个要改的地方是持久层,映射文件和pojo层的文件的位置。

将后面的com.example.xxx改为自己项目对应的路径。

   <javaModelGenerator targetProject="src/main/java" targetPackage="com.example.mybatis.pojo">
            <!-- 是否生成子包,即pojo下创建javaBean类时是否再建个包 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 设置是否在getter方法中,对String类型字段调用trim()方法,即把两边的空格去掉 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--映射文件生成-->
        <!-- targetProject:配置文件路径 targetPackage:生成映射文件的位置 -->
        <!--com.first.mapper路径也需要自己创建,即在src/main/resources下创建,且必须一层一层创建-->
        <sqlMapGenerator targetProject="src/main/resources" targetPackage="mappers">
            <!-- 是否生成子包 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!--持久层接口包生成-->
        <!-- targetPackage:JAVA类路径 targetProject:生成的持久层接口包 -->
        <!--com.first.mapper路径也需要自己创建,即在src/main/java下创建-->
<!--        <javaClientGenerator targetProject="src/main/java" targetPackage="com.example.mybatis.service" type="XMLMAPPER">-->
        <javaClientGenerator targetProject="src/main/java" targetPackage="com.example.mybatis.mapper" type="XMLMAPPER">
            <!-- 是否生成子包 -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

最后一个要改的地方是映射文件,持久层文件和pojo层文件的内容:

我是这么写的,禁用了一些方法,只会生成几个简单的基于主键的增删改查。

<table tableName="player_accounts" domainObjectName="PlayerAccounts" enableCountByExample="false" enableUpdateByExample="false"
       enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
    <property name="useActualColumnNames" value="false"/>
    <!-- 数据库表主键 -->
    <generatedKey column="id" sqlStatement="Mysql" identity="true"/>
</table>

而这种方法会按照默认配置来生成持久层,pojo层和映射文件中的方法。

<table tableName="player_accounts"></table>

配置好了之后再点击右边的插件开始创建。

再加上@Repository就可以被当作一个bean,就可以被其他的类@Autowired了。

在启动项类中使用该注解加载mapper,路径改为自己的:

@MapperScan("com.example.mybatis.mapper")

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

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

相关文章

ChatGPT 4o with Canvas — 新特性详解

# ChatGPT 4o with Canvas — 新特性详解 最近猫哥也感受到 Canvas 的强大&#xff0c;顺手开了个会员体验了一天&#xff0c;今天给大家简单分享一下&#xff0c;有想体验的伙伴可以文末名片私信我哈&#xff01; 关键词&#xff1a; #ChatGPT4o #Canvas新特性 #AI写作工具 …

[论文笔记]DAPR: A Benchmark on Document-Aware Passage Retrieval

引言 今天带来论文DAPR: A Benchmark on Document-Aware Passage Retrieval的笔记。 本文提出了一个基准&#xff1a;文档感知段落检索(Document-Aware Passage Retrieval,DAPR)以及介绍了一些上下文段落表示的方法。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c…

Best HTTP V3

Best HTTP是Unity的权威网络解决方案,专为需要多功能性和强大功能的开发人员而设计。它与Unity 2021.1及更高版本无缝兼容,提供无与伦比的跨平台支持,包括桌面、移动设备、UWP和Web浏览器。凭借其高级功能集,它超越了基本的HTTP请求,支持HTTPS、HTTP/2,并通过传统的回调、…

2024年10月11日历史上的今天大事件早读

1038年10月11日李元昊称帝&#xff0c;国号大夏&#xff0c;西夏建立 1086年10月11日北宋政治家、史学家司马光逝世 1889年10月11日英国物理学家焦耳逝世 1900年10月11日李鸿章开始与八国联军的艰难谈判 1937年10月11日淞沪战线大场之战爆发 1944年10月11日日军包围桂林 …

The 2024 ICPC Kunming Invitational Contest K. Permutation(交互 期望)

在知乎内查看 题目 思路来源 题解 首先特判n1的情况&#xff0c;其实也不用问 分治&#xff0c;假设当前解决到[l,r]&#xff0c;要递归的vector是x&#xff0c; 维护两个vector L、R&#xff0c;代表下一步要在[l,mid]和[mid1,r]分治的vector 每次将x random_shuffle后&a…

网络安全 IP地址防泄漏指南

IP地址作为每个上网人的“门牌标识号”&#xff0c;如果产生泄露&#xff0c;可能会导致个人行踪曝光、数据被窃取甚至遭受网络攻击&#xff0c;要防止IP地址不被窃取&#xff0c;我们可以尝试以下方法&#xff1a; 利用专用网络加强隐私保护 通过加密在公共网络上创建一条安全…

力扣 前缀和

找子数组的个数了解前缀和的基础。 前缀和大致理解为到达某个位置&#xff0c;前面几个数的总和&#xff0c;即s[i1]s[i]a[i1]&#xff0c;可以通过一次循环获得。然后几个前缀和作差&#xff0c;即可得到某个位置到某个位置的和&#xff0c;根据map的键值对进行更新次数。 题…

博客项目自动化测试(一)

1. 确认博客系统的环境搭建 http://49.235.129.183:8080/java109_blog_system/blog_list.html&#xff0c;即可访问我的小项目&#xff1b; 2. 确定测试用例 测试用例如下所示&#xff1a; 3. 关于登录的测试用例 3.1 初始化和退出浏览器 代码如下&#xff1a; package Blo…

查缺补漏----二进制指数退避算法的流程

具体为以下几步&#xff1a; 例题&#xff1a; ① 争用时间片2t51.2us ② kmin{重传次数&#xff0c;10}&#xff0c;题目说4次冲突&#xff0c;所以k为4&#xff0c;对应参数集合为&#xff1a; {0&#xff0c;1&#xff0c;2&#xff0c;......} ③ 等待的最长时间&#xff1…

PHP学习记录-编辑器推荐和本地环境的安装

文章目录 一&#xff0c;编辑器首推VSCode1&#xff0c;vscode2&#xff0c;PHPStorm 二&#xff0c;PHP环境搭建1&#xff0c;下载安装2&#xff0c;使用phpstudy创建站点3&#xff0c;答疑解惑 一&#xff0c;编辑器首推VSCode 1&#xff0c;vscode 对于PHP新手来说&#x…

育菁实验室用桌面级CNC加工中心

桌面级CNC加工中心的发展可以追溯到数控技术的兴起。随着数控机床技术的不断进步&#xff0c;小型化、桌面化的加工中心逐渐成为可能。特别是近年来&#xff0c;随着智能制造、工业4.0等概念的提出&#xff0c;桌面级加工中心因其灵活、高效、占地面积小等特点&#xff0c;受到…

【GT240X】【3】Wmware17和Centos 8 安装

文章目录 一、说明二、安装WMware2.1 下载WMware2.2 安装2.3 虚拟机的逻辑结构 三、安装Centos3.1 获取最新版本Centos3.2 创建虚拟机 四、问题和简答4.1 centos被淘汰了吗&#xff1f;4.2 centos里面中文显示成小方块的解决方法4.3 汉语-英语输入切换4.4 全屏和半屏切换 五、练…

【Ubuntu】在Ubuntu上配置Java环境

【Ubuntu】在Ubuntu上配置Java环境 壹、前言 Java是运用得非常广泛的编程语言&#xff0c;在使用Linux时难免会碰到需要用到JDK的情况&#xff0c;故本文介绍如何在Ubuntu上配置Java21环境。 贰、下载 Java的下载渠道很多&#xff0c;有甲骨文公司的“官方”JDK&#xff0c…

2024年第四届机器人、自动化和人工智能国际会议(RAAI 2024)即将召开!

学术会议查询-学术会议交流服务平台-爱科会易 (uconf.com)https://www.uconf.com/ 第四届机器人、自动化和人工智能国际会议&#xff08;RAAI 2024&#xff09;将于 2024 年 12 月 19-21 日在新加坡举行。会议旨在为研究人员、从业人员和行业专家提供一个平台&#xff0c;分享他…

ubuntu安装好后网络里面没有有线网卡连接 已解决

装好ubuntu18.04.6后&#xff0c;发现网络配置里面没有有线网卡连接&#xff0c;怀疑是有线网卡驱动没有安装或者是安装好的有线网卡驱动跟硬件不匹配。网络上搜索了半天&#xff0c;最终是这篇文章解决了我的问题&#xff1a;https://juejin.cn/post/7155368447243714574。简单…

【JAVA+flowable】工作流 实现抄送节点

由于flowable并没有 抄送节点 这一节点类型 只能在审核中添加抄送人, 但客户有此需求。所以定制实现此需求 增加一种节点任务类型: 抄送任务 由于flowable并没有 抄送节点 这一节点类型 所以用自带的 空白任务 改造成抄送 实现步骤 1.就是需要获取到 流程当前节点,下一个…

岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类

岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类 岩石分类检测数据集 (Rock Classification and Detection Dataset) 描述: 本数据集旨在支持对不同类型的岩石进行自动分类和检测&#xff0c;特别适用于地质勘探、矿物识别、环境监测等领域。通过使用该数据集训练的模…

SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz(基础)

SpringBoot教程&#xff08;二十四&#xff09; | SpringBoot实现分布式定时任务之Quartz&#xff08;基础&#xff09; 简介适用场景Quartz核心概念Quartz 存储方式Quartz 版本类型引入相关依赖开始集成方式一&#xff1a;内存方式(MEMORY)存储实现定时任务1. 定义任务类2. 定…

高亚科技助力优巨新材,打造高效数字化研发项目管理平台

近日&#xff0c;中国企业管理软件资深服务商高亚科技与广东优巨先进新材料股份有限公司&#xff08;以下简称“优巨新材”&#xff09;正式签署合作协议&#xff0c;共同推进产品研发管理数字化升级。此次合作的主要目标是通过8Manage PM项目管理系统&#xff0c;提升优巨新材…

使用IDEA启动项目build时,解决Java编译时内存溢出问题:OutOfMemoryError深入解析

文章目录 简介问题描述解决方案常见解决方案示例代码示例1&#xff1a;增加JVM堆内存代码示例2&#xff1a;检查并修复内存泄漏代码示例3&#xff1a;分批编译代码示例4&#xff1a;使用编译器参数减少内存使用代码示例5&#xff1a;升级编译器和库 结论进一步的资源 简介 在J…