什么是MyBatis、什么是MyBatis-Plus、简单详细上手案例

什么是MyBatis

MyBatis是一个开源的Java持久层框架,用于简化与关系型数据库的交互。它通过将SQL语句与Java代码进行分离,提供了一种优雅的方式来处理数据库操作

MyBatis核心思想是将SQL语句与Java方法进行映射,使得开发人员可以通过配置文件或注解定义和管理SQL语句。这样做的好处是可以将SQL语句与Java代码解耦,降低了代码的维护成本,提高了代码的可读性和可维护性。

使用MyBatis,开发人员可以使用简单的XML配置或注解来描述数据库表和Java对象之间的映射关系,从而实现对象关系映射(ORM)。此外,MyBatis还提供了丰富的功能,如动态SQL、缓存、事务管理等,以满足各种复杂的数据库操作需求。

总的来说,MyBatis是一个轻量级、灵活且功能强大的Java持久层框架,它简化了数据库操作的编写和管理,并提供了丰富的特性和扩展点,使得开发人员可以更加高效地进行数据访问。

什么是MyBatis-Plus

MyBatis-Plus是一个基于MyBatis的轻量级、强大且功能丰富的持久层框架,它进一步简化了与关系型数据库的交互。它是在MyBatis的基础上进行扩展和增强的工具集,提供了更多便捷的开发功能和增强的查询能力。

MyBatis-Plus提供了一系列的增删改查操作的封装方法,使得开发人员可以通过简单的API调用完成常见的数据库操作,无需编写繁琐的SQL语句。它还提供了诸如分页查询、条件构造器、Lambda表达式查询等高级查询功能,极大地简化了复杂查询的编写过程。

除了常见的CRUD操作,MyBatis-Plus还提供了一些额外的功能,如自动生成代码、逻辑删除、乐观锁、多租户支持等,以进一步提升开发效率和代码质量。

总的来说,MyBatis-Plus是一个优秀的持久层框架,它在MyBatis的基础上提供了更多的便利功能和增强能力,使得开发人员可以更加方便、高效地进行数据库操作和查询。它的简洁性、易用性和功能丰富性使得它成为众多Java开发者的首选框架之一。

通过使用 MyBatis-Plus,开发者可以更加快速、高效地进行数据库操作,减少了繁琐的配置和编码工作。

但需要注意的是,MyBatis-Plus 并不是完全取代 MyBatis,而是在其基础上提供了更多的便利功能,因此在具体项目中的选择还需根据实际需求和团队技术偏好来决定。

案例测试MyBatis-Plus

项目创建:

创建SpringBoot项目(使用idea 的Spring Initializr 功能快速搭建一个SpringBoot项目)

可以在创建SpringBoot选择构建所需依赖:

常见的如

Spring Boot Lombok :Java 的插件库实现对类的get set tostring 有无参数通过注解来简化代码

MySQL Driver:与 MySQL 数据库进行交互

Spring Web:提供了 Web 应用开发的相关功能

pom.xml导包:

当在快速搭建SpringBoot项目时没有或者忘记选择项目依赖时间,我们可以手动在pom.xml导入包。

比如这次的MyBatis-Plus 需要的包

配置文件

这来的yml也是配置文件只是这是yml更适合我们看,都是一样的,如果配置文件有相同配置,最后是以.properties为准则

代码部分:

我们这里先简单的介绍MyBatis-Plus功能:

  1. 最简单的是无需编写繁琐的SQL语句实现对数据库的增删改查等操作。

1.1使用MyBatis-Plus的条件构造器(Wrapper)

1.2这个一样可以使用手写sql,且手写sql语句的两种方式。(注解、xml)

2.代码生成器

文件布局:

数据库部分:

代码部分:

创建类对象:bean目录下的Student类

如果我们创建的数据库属性再带_,但是系统默认会使用驼峰命名,这样你的MyBatis-Plus无sql语句就会报错,原因是系统会把你数据库表字段生成StuId这样的不是stu_id,所以我们可以取消驼峰命名或者数据库我们就按照驼峰命名创建属性。

取消驼峰命:

Mapper:

配置文件声明和启动项声明:(我这里选择的是启动项声明)

这里解释一下为什么我们需要声明这个(mapper)配置:

在 MyBatis-Plus 中,使用 Mapper 接口来访问数据库。Mapper 接口是一个纯粹的 Java 接口,其中定义了一组数据库操作方法。通过在 Mapper 接口上添加注解和 XML 文件,可以实现对数据库表的增删改查操作。

在 Spring Boot 中,需要将 Mapper 接口注册为 Spring Bean,才能在其他地方进行注入和使用。为了实现自动化的 Mapper 注册,可以使用 MyBatis-Plus 提供的 @MapperScan 注解。@MapperScan 注解用于指定 Mapper 接口所在的包路径,它会自动扫描该包及其子包下的所有 Mapper 接口,并将它们注册为 Spring Bean。在启动项中声明 @MapperScan 注解后,Spring Boot 应用程序会自动扫描 Mapper 接口并将其注册为 Bean,从而使我们可以在其他地方直接注入 Mapper 接口,而无需手动注册 Bean。

因此,在启动项中声明 @MapperScan(basePackages = "mapper文件路径") 是必要的,以确保 Mapper 接口能够被正确地扫描和注册为 Spring Bean,使其能够在整个应用程序中正常使用。

总结:

MyBatis mapper接口定义的对数据库操作的语句都是单纯的java代码接口,定义了操作数据库的方法,我们可以通过MyBatis-Plus定义接口继承BaseMapper或者使用注解或者xml实现对数据库的操作,但是这个前提是要把这个接口通过MyBatis-Plus 提供的 @MapperScan 注解自动扫描 Mapper 接口并将其注册为 Bean,从而使我们可以在其他地方直接注入 Mapper 接口,而无需手动注册 Bean。

在 Spring 框架中,"Bean" 是指由 Spring 容器管理的对象实例。当你将一个类声明为 Bean 后,Spring 容器就会负责实例化、组装和管理这个对象,你可以在应用程序的其他部分通过依赖注入来引用和使用这些 Bean。

Service:

StudnetService主要实习的是对数据库的操作

DmscService主要实习的是代码生成器的操作

Controller:

点击

运行就可以了

测试:

实现功能:

mybatisplus基本使用

mybatisplus代码生成器

mybatisplus读写分离

代码生成器:

代码生成器是一个用于自动生成Java代码和MyBatis映射文件(XML文件)的工具,可以帮助开发人员快速生成与数据库表对应的实体类、Mapper接口和映射配置。

在MyBatis-Plus中,代码生成器是MyBatis-Plus工具集的一部分,提供了一套简单易用的代码生成器,使得开发人员可以非常方便地生成基础的数据访问层代码。

使用MyBatis-Plus的代码生成器,您需要先完成以下步骤:

    配置数据库连接信息:在配置文件中指定数据库连接地址、用户名、密码等信息。

    配置生成器参数:通过设置生成器参数,指定需要生成的表、生成文件输出路径、生成文件的命名规则等信息。

    编写模板文件:根据项目需求编写模板文件,定义生成的代码结构和格式。

当您完成以上步骤后,就可以启动代码生成器来生成代码了。代码生成器会读取数据库表的结构信息,根据模板文件和生成器参数,自动生成与数据库表对应的Java类、Mapper接口和XML映射文件。生成的代码包括了基本的CRUD操作,可直接应用到项目中。

代码生成器还提供了其他功能,如:

    自动生成DTO(数据传输对象)、Service接口等文件,以及自定义模板文件。

    自动识别数据库表之间的关联关系,并生成相应的代码。

    自动添加注释和日志等信息,提高代码的可读性和可维护性。

总之,代码生成器是一个能够自动生成基础数据访问层代码、提高开发效率的工具。它可以帮助开发人员减少手动编写代码的工作量,保证代码的一致性和规范性,加快项目开发进度。

代码生成器的优点包括:

   1. 提高开发效率:通过自动化生成基础代码,减少了重复劳动和手动编写代码的时间,使开发人员可以将更多精力投入到业务逻辑的开发上。

    2.保证代码一致性:生成的代码基于统一的模板和配置信息,可以保证生成的代码具有一致的格式和规范,避免了因人为因素导致的代码风格不一致问题。

    3.减少错误率:手动编写代码容易出现疏漏和错误,而代码生成器能够根据表结构自动生成代码,减少了人为错误的可能性。

    4.易于维护和更新:当数据库表结构发生变化时,只需重新运行代码生成器即可更新生成的代码,无需手动修改大量代码。

然而,代码生成器也存在一些缺点,包括:

    学习成本:需要花时间学习和理解代码生成器的配置和模板文件的编写,对于新手来说可能需要一定的学习成本。

    灵活性受限:生成的代码受限于模板文件的定义,可能无法完全满足特定的业务需求,需要额外的手动修改和扩展。

    可维护性:生成的代码可能过于“机械化”,缺乏一定的智能性和灵活性,可能导致生成的代码结构过于僵化,不易维护和扩展。

综上所述,代码生成器在提高开发效率和保证代码质量方面有着明显的优势,但也需要注意学习成本和灵活性受限这些缺点,并在实际项目中权衡利弊,选择合适的使用方式。

创建SpringBoot项目遇见 jdk1.8 的版本 只可以创建 17 和 21 的java版本,且创建不成功。

解决办法:

修改

将这个改为 https://start.aliyun.com/ 就行了

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

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

相关文章

C语言数据结构-基于单链表实现通讯录

文章目录 1 基础要求2 通讯录功能2.1 引入单链表的文件2.2 定义联系人数据结构2.3 打开通讯录2.4 保存数据后销毁通讯录2.5 添加联系人2.6 删除联系人2.7 修改联系人2.8 查找联系人2.9 查看通讯录 3 通讯录代码展示3.1 SeqList_copy.h3.2 SeqList_copy.c3.3 Contact.h3.4 Conta…

模块化机房在大数据时代的角色:高效、可扩展的数据存储和处理平台

随着大数据时代的到来,数据已经成为企业竞争的核心资源。然而,传统的数据中心已经无法满足现代业务的需求,尤其是在数据存储和处理方面。模块化机房作为一种新型的数据中心建设模式,具有高效、可扩展等优势,逐渐成为大…

PyCharm编辑器结合Black插件,轻松实现Python代码格式化

大家好,使用Black对Python代码进行格式化,可使代码看起来更美观。但是,随着项目规模不断变大,对每个文件运行Black变得很繁琐。本文就来介绍在PyCharm中实现这一目标的方法。 1.安装Black 首先,在虚拟环境中安装Blac…

二叉树的锯齿形层序遍历[中等]

优质博文:IT-BLOG-CN 一、题目 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1: 输…

认识线程和创建线程

目录 1.认识多线程 1.1线程的概念 1.2进程和线程 1.2.1进程和线程用图描述关系 1.2.2进程和线程的区别 1.3Java 的线程和操作系统线程的关系 2.创建线程 2.1继承 Thread 类 2.2实现 Runnable 接口 2.3匿名内部类创建 Thread 子类对象 2.4匿名内部类创建 Runnable 子类对…

使用贝叶斯网络检测因果关系,提升模型效果更科学(附Python代码)

虽然机器学习技术可以实现良好的性能,但提取与目标变量的因果关系并不直观。换句话说,就是:哪些变量对目标变量有直接的因果影响? 机器学习的一个分支是贝叶斯概率图模型(Bayesian probabilistic graphical models),也…

【Com通信】Com模块详细介绍

目录 前言 1. Com模块功能介绍 2.关键概念理解 3.功能详细设计 3.1 Introduction 3.2 General Functionality 3.2.1 AUTOSAR COM basis 3.2.2 Signal Values 3.2.3 Endianness Conversion and Sign Extension 3.2.4 Filtering 3.2.5 Signal Gateway 3.3 Normal Ope…

2.2 网络多线程(私聊、群发、发送文件、推送新闻、离线留言)

文章目录 一、私聊1.1 分析1.2 客户端1.2.1 MessageClientService 私聊类1.2.2 ClientConnectServerThread 线程类 1.3 服务端1.3.1 ServerConnectClientThread 线程类 1.4功能演示 二、群发消息2.1 分析2.2 客户端2.2.1 MessageClientService类2.2.2 ClientConnectServerThrea…

通过仿真理解完整的阵列信号噪声模型

概要 噪声对无线电设备的信号接收会造成影响,是通信、雷达、导航、遥感等工程应用领域中的关键考虑因素。通常认为阵列合成能够提升信噪比,但忽略了这一论断的前提,即不同通道引入的噪声互不相关。但实际应用中,接收的噪声不仅仅包含信道引入的不相关噪声,还包含从外界环…

1-6、编程语言排行榜

语雀原文链接 https://www.tiobe.com/tiobe-index/

IntelliJ IDEA创建一个Maven项目

在IDEA中创建Maven项目,前提是已经安装配置好Maven环境 。 本文主要使用的是IntelliJ IDEA 2022.2.1 (Community Edition) 1.创建一个新project:File>Project 2.修改Maven配置:File>Settings>搜索maven 创建好的工程如下: src/main…

Chart 8 内核优化

文章目录 前言8.1 内核融合和拆分8.2 编译选项8.3 Conformant(规范) vs. fast vs. native math functions8.4 Loop unrolling8.5 避免分支发散8.6 Handle image boundaries8.7 Avoid the use of size_t8.8 通用 vs. 具名内存地址空间8.9 Subgroup8.10 Us…

SpringSecurity6 | 自定义认证规则

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Java从入门到精通 ✨特色专栏&#xf…

移相干涉技术1-多种干涉条纹仿真模拟生成(原理转载+代码实现 包括模拟生成干涉条纹图)

过去的干涉测量技术是通过人的肉眼或者相机拍摄,来直观判断干涉图中条纹特征进而完成测量,该方法的不稳定因素(比如人的主观意志)很多,其精度误差在/10左右38];现代干涉测量技术通过将电子技术、计算机技术…

智能优化算法应用:基于厨师算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于厨师算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于厨师算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.厨师算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

一加 12 Pop-up快闪活动来袭,十城联动火爆开启

12 月 9 日,一加 12 Pop-up 快闪活动在北京、深圳、上海、广州等十城联动开启,各地加油欢聚快闪现场,抢先体验与购买一加 12。作为一加十年超越之作,一加 12 全球首发拥有医疗级护眼方案和行业第一 4500nit 峰值亮度的 2K 东方屏、…

C++新经典模板与泛型编程:策略类模板

策略类模板 在前面的博文中,策略类SumPolicy和MinPolicy都是普通的类,其中包含的是一个静态成员函数模板algorithm(),该函数模板包含两个类型模板参数。其实,也可以把SumPolicy和MinPolicy类写成类模板—直接把algorithm()中的两…

【Linux】无法使用 ifconfig 查看系统网络接口信息,报错 command not found: ifconfig

问题描述 ifconfig是一个用于配置和显示系统网络接口信息的命令行工具。它通常用于Unix、Linux和其他类Unix系统中。 通过ifconfig命令,你可以查看和修改系统中网络接口的配置信息,包括IP地址、子网掩码、MAC地址、MTU(最大传输单元&#x…

javacv踩坑记录

前一阵学习opencv,发现在做人脸识别的时候遇到一些类库不存在的情况,查找后发现是由于拓展包没有安装完全(仅安装了基础版)。由于网络的问题(初步猜测),始终无法安装好拓展包。 于是另辟蹊径&am…

[文档级关系抽取|ACL论文]文档级关系抽取中语言理解的基础模型

Did the Models Understand Documents? Benchmarking Models for Language Understanding in Document-Level Relation Extraction School of Computer Science, Fudan University | ACL 2023.06 | 原文链接 Background 过去的工作大多数都是从单个句子中收获更多的关系&am…