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

Spring Boot中整合MyBatis(基于xml方式基于注解实现方式)

一、前提准备

在Spring Boot中整合MyBatis时,你需要导入JDBC(不需要手动添加)和Druid的相关依赖。

  1. JDBC依赖:在Spring Boot中整合MyBatis时,并不需要显式地添加JDBC的包依赖。这是因为,当你添加mybatis-spring-boot-starter依赖时,它已经包含了对JDBC的依赖。mybatis-spring-boot-starter是MyBatis官方提供的用于整合MyBatis和Spring Boot的依赖,它已经包含对JDBC的支持。这个依赖会自动引入适用于Spring Boot的JDBC依赖,因此你不需要手动添加

     如果你想了解如何整合JDBC可参考: SpringBoot整合JDBC--->SpringBoot整合JDBC_Maiko Star的博客-CSDN博客

  2. Druid依赖:Druid是一个强大的数据库连接池和监控工具,如果你希望使用Druid作为连接池,需要导入Druid的依赖。可以通过以下方式在pom.xml文件中添加Druid的依赖:

<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.6</version>
</dependency>

SpringBoot整合Druid ------> SpringBoot整合Druid_Maiko Star的博客-CSDN博客

二、导入MyBatis依赖 

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version>
</dependency>

三、配置数据库连接

application.propertiesapplication.yml中配置数据库连接信息,例如:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

如果你使用了Druid,还需要加上Druid相关配置(spring.datasource.type=com.alibaba.druid.pool.DruidDataSource必须加上,其他配置可不加)


# Druid配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=30000
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

四、在resources下创建mapper文件夹,并在application.yml里配置路径

image.png


下面是基于xml方式: 

 五、在mapper文件下写相应的xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.dfrz.mapper.StudentMapper"><select id="getStuById" resultType="com.dfrz.pojo.Student">select * from `student` where id = #{id}</select></mapper>

六、创建mapper包和对应的接口,在接口加上@Mapper注解,或者在启动类加上@MapperScan(value = "com.dfrz.mapper")注解

在接口加上@Mapper注解:

image.png

在启动类加上@MapperScan(value = "com.dfrz.mapper")注解:

image.png

 七、测试

配置相应的controller进行测试:

image.png

image.png

 测试成功!!!

八、可以添加配置类,开启驼峰识别

package com.dfrz.config;import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configurationpublic class MybatisConfig {@Beanpublic ConfigurationCustomizer configurationCustomizer(){return new ConfigurationCustomizer() {@Overridepublic void customize(org.apache.ibatis.session.Configuration configuration) {configuration.setMapUnderscoreToCamelCase(true);//驼峰//configuration.setCacheEnabled(true);//缓存}};}}

下面是基于注解方式:

在MyBatis中,你可以使用注解来简化数据库操作的配置。通过注解,你可以在Mapper接口的方法上添加相应的注解来指定对应的SQL语句和参数映射关系,无需再编写XML Mapper文件。

  1. @Select:用于执行查询操作的注解,指定SQL查询语句。

  2. @Insert:用于执行插入操作的注解,指定SQL插入语句。

  3. @Update:用于执行更新操作的注解,指定SQL更新语句。

  4. @Delete:用于执行删除操作的注解,指定SQL删除语句。

 以下是使用注解进行数据库操作的示例:

public interface UserMapper {@Select("SELECT * FROM users")List<User> getAllUsers();@Select("SELECT * FROM users WHERE id = #{id}")User getUserById(Long id);@Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})")@Options(useGeneratedKeys = true, keyProperty = "id") //用于在插入操作时生成主键并将生成的主键赋值给实体类的属性。int insertUser(User user);@Update("UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}")int updateUser(User user);@Delete("DELETE FROM users WHERE id = #{id}")int deleteUser(Long id);}

相关文章:

Spring Boot中整合MyBatis(基于xml方式基于注解实现方式)

一、前提准备 在Spring Boot中整合MyBatis时&#xff0c;你需要导入JDBC&#xff08;不需要手动添加&#xff09;和Druid的相关依赖。 JDBC依赖&#xff1a;在Spring Boot中整合MyBatis时&#xff0c;并不需要显式地添加JDBC的包依赖。这是因为&#xff0c;当你添加mybatis-sp…...

ChatGPT漫谈(三)

AIGC(AI Generated Content)指的是使用人工智能技术生成的内容,包括文字、图像、视频等多种形式。通过机器学习、深度学习等技术,AI系统可以学习和模仿人类的创作风格和思维模式,自动生成大量高质量的内容。AIGC被视为继用户生成内容(UGC)和专业生成内容(PGC)之后的下…...

树、二叉树(C语言版)详解

&#x1f355;博客主页&#xff1a;️自信不孤单 &#x1f36c;文章专栏&#xff1a;数据结构与算法 &#x1f35a;代码仓库&#xff1a;破浪晓梦 &#x1f36d;欢迎关注&#xff1a;欢迎大家点赞收藏关注 文章目录 &#x1f34a;树的概念及结构1. 树的概念2. 树的相关概念3.树…...

vue中Cascader 级联选择器实现-修改实现

vue 的cascader研究了好长时间&#xff0c;看了官网给的示例&#xff0c;上网查找了好多信息&#xff0c;才解决修改时回显的问题&#xff0c;现将方法总结如下&#xff1a; vue代码&#xff1a; <el-form-item label"芯片" prop"firmware"> <…...

C语言实现三子棋游戏

test.c源文件 - 三子棋游戏测试 game.h头文件 - 三子棋游戏函数的声明 game.c源文件 - 三子棋游戏函数的实现 主函数源文件&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1#include"game.h" //自己定义的用"" void menu() {printf("*************…...

机器学习深度学习——softmax回归从零开始实现

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——向量求导问题 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮助 …...

Windows如何安装Django及如何创建项目

目录 1、Windows安装Django--pip命令行 2、创建项目 2.1、终端创建项目 2.2、在Pycharm中创建项目 2.3、二者创建的项目有何不同 2.4、项目目录说明 1、Windows安装Django--pip命令行 安装Django有两种方式&#xff1a; pip命令行【推荐--简单】手动安装【稍微复杂一丢丢…...

在CSDN学Golang云原生(监控解决方案Prometheus)

一&#xff0c;记录规则配置 在golang云原生中&#xff0c;通常使用日志库记录应用程序的日志。其中比较常见的有logrus、zap等日志库。这些库一般支持自定义的输出格式和级别&#xff0c;可以根据需要进行配置。 对于云原生应用程序&#xff0c;我们通常会采用容器化技术将其…...

双重for循环优化

项目中有段代码逻辑是个双重for循环&#xff0c;发现数据量大的时候&#xff0c;直接导致数据接口响应超时&#xff0c;这里记录下不断优化的过程&#xff0c;算是抛砖引玉吧~ Talk is cheap,show me your code&#xff01; 双重for循环优化 1、数据准备2、原始双重for循环3、…...

golang利用go mod巧妙替换使用本地项目的包

问题 拉了两个项目下来&#xff0c;其中一个项目依赖另一个项目&#xff0c;因为改动了被依赖的项目&#xff0c;想重新导入测试一下。 解决办法 go.mod文件的require中想要被代替的包名在replace中进行一个替换&#xff0c;注意&#xff1a;用来替换的需要用绝对路径&#xf…...

使用 docker 一键部署 MySQL

目录 1. 前期准备 2. 导入镜像 3. 创建部署脚本文件 4. MySQL 服务器配置文件模板 5. 执行脚本创建容器 6. 后续工作 7. 基本维护 1. 前期准备 新部署前可以从仓库&#xff08;repository&#xff09;下载 MySQL 镜像&#xff0c;或者从已有部署中的镜像生成文件&#x…...

MyBatis-Plus 查询PostgreSQL数据库jsonb类型保持原格式

文章目录 前言数据库问题背景后端返回实体对象前端 实现后端返回List<Map<String, Object>>前端 前言 在这篇文章&#xff0c;我们保存了数据库的jsonb类型&#xff1a;MyBatis-Plus 实现PostgreSQL数据库jsonb类型的保存与查询 这篇文章介绍了模糊查询json/json…...

Linux操作系统1-命令篇

不同领域的主流操作系统 桌面操作系统 Windos Mac os Linux服务器操作系统 Unix Linux(免费、稳定、占有率高) Windows Server移动设备操作系统 Android(基于Linux,开源) ios嵌入式操作系统 Linux(机顶盒、路由器、交换机) Linux 特点&#xff1a;免费、开源、多用户、多任务…...

opencv-24 图像几何变换03-仿射-cv2.warpAffine()

什么是仿射&#xff1f; 仿射变换是指图像可以通过一系列的几何变换来实现平移、旋转等多种操作。该变换能够 保持图像的平直性和平行性。平直性是指图像经过仿射变换后&#xff0c;直线仍然是直线&#xff1b;平行性是指 图像在完成仿射变换后&#xff0c;平行线仍然是平行线。…...

前端常用的条件限制方法小笔记

手机号的正则表达式(以1开头的11位数字) function checkPhone(){ var phone document.getElementById(phone).value;if(!(/^1[3456789]\d{9}$/.test(phone))){ alert("手机号码有误&#xff0c;请重填"); return false; } }限制输入大于0且最小值要小于最大值 c…...

【LeetCode 算法】Minimum Operations to Halve Array Sum 将数组和减半的最少操作次数-Greedy

文章目录 Minimum Operations to Halve Array Sum 将数组和减半的最少操作次数问题描述&#xff1a;分析代码TLE优先队列 Tag Minimum Operations to Halve Array Sum 将数组和减半的最少操作次数 问题描述&#xff1a; 给你一个正整数数组 nums 。每一次操作中&#xff0c;你…...

Doc as Code (3):业内人士的观点

作者 | Anne-Sophie Lardet 在技术传播国际会议十周年之际&#xff0c;Fluid Topics 的认证技术传播者和功能顾问 Gaspard上台探讨了“docOps 作为实现Doc as Code的中间结构”的概念。在他的演讲中&#xff0c;观众提出了几个问题&#xff0c;我们想分享Gaspard的见解&#x…...

【Kafka】消息队列Kafka基础

目录 消息队列简介消息队列的应用场景异步处理系统解耦流量削峰日志处理 消息队列的两种模式点对点模式发布订阅模式 Kafka简介及应用场景Kafka比较其他MQ的优势Kafka目录结构搭建Kafka集群编写Kafka一键启动/关闭脚本 Kafka基础操作创建topic生产消息到Kafka从Kafka消费消息使…...

Java的第十五篇文章——网络编程(后期再学一遍)

目录 学习目的 1. 对象的序列化 1.1 ObjectOutputStream 对象的序列化 1.2 ObjectInputStream 对象的反序列化 2. 软件结构 2.1 网络通信协议 2.1.1 TCP/IP协议参考模型 2.1.2 TCP与UDP协议 2.2 网络编程三要素 2.3 端口号 3. InetAddress类 4. Socket 5. TCP网络…...

【深度学习】High-Resolution Image Synthesis with Latent Diffusion Models,论文

13 Apr 2022 论文&#xff1a;https://arxiv.org/abs/2112.10752 代码&#xff1a;https://github.com/CompVis/latent-diffusion 文章目录 PS基本概念运作原理 AbstractIntroductionRelated WorkMethodPerceptual Image CompressionLatent Diffusion Models Conditioning Mec…...

Legacy iOS Kit深度拆解:揭秘旧款iOS设备重生的技术魔法

Legacy iOS Kit深度拆解&#xff1a;揭秘旧款iOS设备重生的技术魔法 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit …...

医疗AI模型窃取攻击:原理、风险与超声影像场景的防御实践

1. 项目概述&#xff1a;当医疗AI的“大脑”面临被“复制”的风险在医疗影像领域&#xff0c;尤其是超声诊断&#xff0c;深度学习模型正以前所未有的速度改变着临床实践。它能从看似杂乱的超声回波信号中&#xff0c;精准地量化肝脏脂肪含量、鉴别乳腺肿物的良恶性&#xff0c…...

人机协同闭环:AI 时代邮件安全 “人在回路” 防御体系研究

摘要 2026 年&#xff0c;生成式 AI 全面渗透网络钓鱼攻击链&#xff0c;攻击从批量群发转向精准定制、从静态模板转向动态逃逸&#xff0c;传统纯技术防护出现显著盲区。数据显示&#xff0c;AI 自动化鱼叉式钓鱼点击率达 54%&#xff0c;攻击从投放至全面入侵的窗口压缩至秒级…...

通过Taotoken快速为现有项目增加Claude模型调用能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken快速为现有项目增加Claude模型调用能力 假设你正在维护一个使用OpenAI API的项目&#xff0c;现在需要引入Claude模型…...

如何快速掌握游戏MOD制作:LSLib开源工具箱的终极指南

如何快速掌握游戏MOD制作&#xff1a;LSLib开源工具箱的终极指南 【免费下载链接】lslib Tools for manipulating Divinity Original Sin and Baldurs Gate 3 files 项目地址: https://gitcode.com/gh_mirrors/ls/lslib 你是否曾经梦想过修改《神界原罪》或《博德之门3》…...

如何5分钟掌握Translumo:免费实时屏幕翻译工具的完整指南

如何5分钟掌握Translumo&#xff1a;免费实时屏幕翻译工具的完整指南 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是…...

诈骗分子利用微软内部账户发垃圾链接,微软能否解决安全漏洞?

诈骗事件曝光 几个月来&#xff0c;诈骗分子利用漏洞&#xff0c;从微软内部通常用于发送合法账户提醒的电子邮件地址发送垃圾邮件。目前不清楚他们如何利用系统&#xff0c;但能像新客户一样创建新微软账户&#xff0c;并以微软名义发邮件&#xff0c;易让人们误以为邮件真实。…...

在多地域部署服务中体验Taotoken路由能力对API延迟的优化

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在多地域部署服务中体验Taotoken路由能力对API延迟的优化 1. 场景与挑战 在构建面向全球用户的服务时&#xff0c;一个常见的架构…...

因果机器学习在制造业返工决策中的应用:以白光LED产线为例

1. 项目概述&#xff1a;当因果推断遇上产线返工在制造业&#xff0c;尤其是像白光LED芯片制造这样的精密流程工业里&#xff0c;每天都有成千上万个生产批次&#xff08;Lot&#xff09;在产线上流转。每个批次在经过磷光体转换&#xff08;Color Conversion&#xff09;这一关…...

图神经网络与最近邻算法融合:硬件木马门级网表定位技术解析

1. 项目概述&#xff1a;当图神经网络遇上硬件木马在芯片设计这个精密如微雕的领域&#xff0c;每一根连线的走向、每一个逻辑门的布局都关乎着最终产品的性能与安全。然而&#xff0c;一个幽灵——“硬件木马”&#xff08;Hardware Trojan&#xff09;——正游荡在全球化的集…...