spring06:mybatis-spring(Spring整合MyBatis)
spring06:mybatis-spring(Spring整合MyBatis)
文章目录
- spring06:mybatis-spring(Spring整合MyBatis)
- 前言:
- 什么是 MyBatis-Spring?
- MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。
- 一、mybatis流程
- 1. 编写实体类
- 2. 编写核心配置文件mybatis-config.xml
- 3. 编写接口UserMapper
- 4. 编写配置文件UserMapper.xml
- 5. 编写测试类
- 二、spring整合mybatis 方式一
- 1. 在pom.xml导入maven依赖:mybatis-spring
- 2. 写一个接口实现类:UserDaoImpl(对于UserMapper接口)
- 在后面须要把这个类注入到spring容器里面(beams.xml)
- 3. 编写spring配置文件spring-dao.xml(相当于beans.xml)
- 注意:上面图片第4步的将实现类注入到spring中,写错了(那个是第二种方式的)
- 下面这个才是:(私有化一个sqlSession)
- 4. 编写测试类
- 三、spring整合mybatis 方式二
- 1. 编写实现类UserDaoImpl 直接继承 SqlSessionDaoSupport
- 2. 编写spring配置文件spring-dao.xml(相当于beans.xml)
- applicationContext.xml是beans.xml配置文件的 整合!!!
- 3. 编写测试类
- 总结
前言:
什么是 MyBatis-Spring?
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。

提示:以下是本篇文章正文内容:
一、mybatis流程
1.编写实体类
2.编写核心配置文件mybatis-config.xml
3.编写工具类MyBatisUtil
4.编写接口UserMapper
5.编写配置文件UserMapper.xml
6.编写测试类
1. 编写实体类
// 使用了lombok注解简化:
@Data
public class User {private int id;private String name;private String pwd;
}
2. 编写核心配置文件mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><typeAliases><package name="nuc.ss.pojo"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true;useUnicode=true;characterEncoding=utf8"/><property name="username" value="root"/><property name="password" value="admin"/></dataSource></environment></environments><mappers><package name="nuc.ss.dao"/></mappers>
</configuration>
3. 编写接口UserMapper
public interface UserMapper {public List<User> selectUser();
}
4. 编写配置文件UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="nuc.ss.dao.UserMapper"><select id="selectUser" resultType="User">select * from user</select></mapper>
5. 编写测试类
MyBatisUtils工具类的作用就是创建sqlSession
我们在测试类直接创建,逻辑和 MyBatisUtils工具类是差不多的。
@Test
public void selectUser() throws IOException {// MyBatisUtils工具类的作用就是创建sqlSession// 我们在测试类直接创建,逻辑和 MyBatisUtils工具类是差不多的。String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);List<User> userList = mapper.selectUser();for (User user: userList){System.out.println(user);}sqlSession.close();
}
二、spring整合mybatis 方式一
1.编写数据源配置
2.sqlSessionFactory
3.sqlSessionTemplate
4.需要给接口加实现类
5.将自己写的实现类,注入到spring当中
6.编写测试类
1. 在pom.xml导入maven依赖:mybatis-spring
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.2</version>
</dependency>
2. 写一个接口实现类:UserDaoImpl(对于UserMapper接口)
在后面须要把这个类注入到spring容器里面(beams.xml)
这个类的作用:相当于mybatis的测试类,
得到sqlSession对象,执行UserMapper的方法。(执行sql语句)
在mybatis-spring里面,我们需要写这样一个方法,然后注入到spring里面,交给spring来管理。
public class UserDaoImpl implements UserMapper {//sqlSession不用我们自己创建了,Spring来管理private SqlSessionTemplate sqlSession;public void setSqlSession(SqlSessionTemplate sqlSession) {this.sqlSession = sqlSession;}public List<User> selectUser() {UserMapper mapper = sqlSession.getMapper(UserMapper.class);return mapper.selectUser();}
}
3. 编写spring配置文件spring-dao.xml(相当于beans.xml)

注意:上面图片第4步的将实现类注入到spring中,写错了(那个是第二种方式的)
下面这个才是:(私有化一个sqlSession)
<bean id="userDao" class="nuc.ss.dao.UserDaoImpl"><property name="sqlSession" ref="sqlSession"/>
</bean>
4. 编写测试类
// 1.获取spring容器
// 2.获取对象
// 3.使用对象执行方法
@Test
public void test(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");UserMapper mapper = (UserMapper) context.getBean("userDao");List<User> user = mapper.selectUser();System.out.println(user);
}
三、spring整合mybatis 方式二
dao继承SqlSessionDaoSupport 类 , 直接利用 getSqlSession() 获得 , 然后直接注入SqlSessionFactory .
比起方式1 , 不需要管理SqlSessionTemplate , 而且对事务的支持更加友好
1. 编写实现类UserDaoImpl 直接继承 SqlSessionDaoSupport
// 1.获取sqlSession对象
// 2.得到mapper对象
// 3.利用mapper对象执行方法
public class UserDaoImpl extends SqlSessionDaoSupport implements UserMapper {public List<User> selectUser() {UserMapper mapper = getSqlSession().getMapper(UserMapper.class);return mapper.selectUser();}
}
2. 编写spring配置文件spring-dao.xml(相当于beans.xml)
applicationContext.xml是beans.xml配置文件的 整合!!!

3. 编写测试类
感觉 mybatis的测试类的步骤 和 mybatis-spring的测试类的步骤 好像!!!
// 1.获取spring容器
// 2.拿到mapper对象
// 3.利用mapper对象执行方法
@Test
public void test2(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");UserMapper mapper = (UserMapper) context.getBean("userDao");List<User> user = mapper.selectUser();System.out.println(user);
}
总结
提示:这里对文章进行总结:
😊😊😊
相关文章:
spring06:mybatis-spring(Spring整合MyBatis)
spring06:mybatis-spring(Spring整合MyBatis) 文章目录 spring06:mybatis-spring(Spring整合MyBatis)前言:什么是 MyBatis-Spring?MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合…...
如何使用自定义Promptbooks优化您的安全工作流程
在当今的数字化时代,安全工作流程的优化变得前所未有的重要。安全团队需要快速、有效地响应安全事件,以保护组织的数据和资产。Microsoft Copilot for Security提供了一种强大的工具——自定义Promptbooks,它可以帮助安全专家通过自动化和定制…...
Text2sql的一些技巧
最近看到了一篇关于text2sql的文章,以及一些论文。对使用模型做text2sql给了一些不错的建议。 参考文章:24年大模型潜力方向:大浪淘沙后的Text-to-SQL和Agent - 知乎 论文:https://arxiv.org/pdf/2403.09732.pdf 关于模型的建议 …...
aws云靶场和一些杂记
aws靶场 在AWS靶场中,存在三个安全问题:1) 一个S3存储桶政策配置错误,允许公共访问,通过访问特定域名可获取flag。2) SQS消息队列的政策没有限制角色,允许发送和接收消息,通过aws sqs命令行工具的receive-…...
《AI编程类工具之四——GitHub copiot》
一.简介 官网:https://github.com/features/copilot GitHub Copilot是由GitHub和OpenAI合作开发的一款人工智能编程助手。这款工具基于OpenAI的GPT-3模型进行训练,旨在帮助开发者更高效地编写代码。 二.功能介绍 智能代码补全:GitHub Cop…...
Unity类银河恶魔城学习记录13-1 p142 Save system源代码
Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili FileDataHandler.cs using System; using System.IO; using UnityEngine; p…...
【C++杂货铺】继承
目录 🌈前言🌈 📁 继承的概念和定义 📂 概念 📂 定义 📁 基类和派生类对象赋值转换 📁 继承中的作用域 📁 派生类的默认成员函数 构造函数 析构函数 拷贝构造函数 赋值重载…...
快速上手Linux核心命令
Linux 的重要性不用我多说了吧,大多数互联网公司,服务器都是采用的Linux操作系统 Linux是一个主要通过命令行来进行管理的操作系统。 只有熟练掌握Linux核心命令,在使用起来我们才会得心应手 这里给大家整理了Linux一些核心命令࿰…...
背 单 词 (考研词汇闪过)
单词: 买考研词汇闪过 研究艾宾浩斯遗忘曲线 https://www.bilibili.com/video/BV18Y4y1h7YR/?spm_id_from333.337.search-card.all.click&vd_source5cbefe6dd70d6d84830a5891ceab2bf9 单词方法 闪记背两排(5min)重复一遍(2mi…...
数据库工具解析之 OceanBase 数据库导出工具
背景 大多数的数据库都配备了自己研发的导入导出工具,对于不同的使用者来说,这些工具能够发挥不一样的作用。例如:DBA可以使用导数工具进行逻辑备份恢复,开发者可以使用导数工具完成系统间的数据交换。这篇文章主要是为OceanBase…...
[Algorithm][滑动窗口][长度最小的子数组] + 滑动窗口原理
目录 0.滑动窗口原理讲解1.长度最小的子数组1.题目链接2.算法原理讲解3.代码实现 0.滑动窗口原理讲解 滑动窗口:“同向双指针”滑动窗口可处理「⼀段连续的区间」问题如何使用? left 0, right 0进窗口判断 是否出窗口 更新结果 -> 视情况而定 可能…...
.NET 发布,部署和运行应用程序
.NET应用发布 发布.Net应用有很多种方式,下面列举三种发布方式: 单文件发布跨平台发布Docker发布 单文件发布 右键工程,选择“发布”,部署模式选择“独立”,目标运行时选择自己想要部署到的系统,我这里用…...
B树(B-tree)
B树(B-tree) B树(B-tree)是一种自平衡的多路查找树,主要用于磁盘或其他直接存取的辅助存储设备 B树能够保持数据有序,并允许在对数时间内完成查找、插入及删除等操作 这种数据结构常被应用在数据库和文件系统的实现上 B树的特点包括: B树为…...
EelasticSearch是什么?及EelasticSearch的安装
一、概述 Elasticsearch 是一个基于 Apache Lucene 构建的开源分布式搜索引擎和分析引擎。它专为云计算环境设计,提供了一个分布式的、高可用的实时分析和搜索平台。Elasticsearch 可以处理大量数据,并且具备横向扩展能力,能够通过增加更多的…...
Python机器学习项目开发实战:如何进行语音识别
注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程:Python机器学习项目开发实战_语音识别_编程案例解析实例详解课程教程.pdf 在Python机器学习项目…...
2024年五一杯数学建模C题思路分析
文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…...
【代码】Python3|Requests 库怎么继承 Selenium 的 Headers (2024,Chrome)
本文使用的版本: Chrome 124Python 12Selenium 4.19.0 版本过旧可能会出现问题,但只要别差异太大,就可以看本文,因为本文对新老版本都有讲解。 文章目录 1 难点解析和具体思路2 注意事项2.1 PDF 资源获取时注意事项2.2 Capabiliti…...
JAVA程序设计-对象设计
无论是根据某马还是某谷的适配教程做项目时候,发现了大部分都是重复的crud,大部分只要做好笔记复习即可,但是却往往忘记了编码设计,所以这里开始复习编码设计,对象设计中,长期使用Mp的那一套导致就是Service Mapper,一套梭哈完了,这样很容易忘记基本功夫 POJO: 简单…...
蓝桥杯2024年第十五届省赛真题-R 格式
找到规律后如下,只需要用高精度加法和四舍五入(本质也是高精度加法就能做),如果没有找到规律,就得自己写高精度乘法和加法,不熟练很容易错。 //#include<bits/stdc.h> #include<iostream> #i…...
Linux服务器硬件及RAID配置
一、服务器硬件 塔式服务器:最初的服务器形态之一,类似于传统的台式电脑,但具有更强的处理能力和稳定性,适合小型企业或部门使用。 机架式服务器:设计为可安装在标准化机架内的模块化单元,可以有效地节省空…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
