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

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&#xff1a;mybatis-spring&#xff08;Spring整合MyBatis&#xff09; 文章目录 spring06&#xff1a;mybatis-spring&#xff08;Spring整合MyBatis&#xff09;前言&#xff1a;什么是 MyBatis-Spring&#xff1f;MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合…...

如何使用自定义Promptbooks优化您的安全工作流程

在当今的数字化时代&#xff0c;安全工作流程的优化变得前所未有的重要。安全团队需要快速、有效地响应安全事件&#xff0c;以保护组织的数据和资产。Microsoft Copilot for Security提供了一种强大的工具——自定义Promptbooks&#xff0c;它可以帮助安全专家通过自动化和定制…...

Text2sql的一些技巧

最近看到了一篇关于text2sql的文章&#xff0c;以及一些论文。对使用模型做text2sql给了一些不错的建议。 参考文章&#xff1a;24年大模型潜力方向&#xff1a;大浪淘沙后的Text-to-SQL和Agent - 知乎 论文&#xff1a;https://arxiv.org/pdf/2403.09732.pdf 关于模型的建议 …...

aws云靶场和一些杂记

aws靶场 在AWS靶场中&#xff0c;存在三个安全问题&#xff1a;1) 一个S3存储桶政策配置错误&#xff0c;允许公共访问&#xff0c;通过访问特定域名可获取flag。2) SQS消息队列的政策没有限制角色&#xff0c;允许发送和接收消息&#xff0c;通过aws sqs命令行工具的receive-…...

《AI编程类工具之四——GitHub copiot》

一.简介 官网&#xff1a;https://github.com/features/copilot GitHub Copilot是由GitHub和OpenAI合作开发的一款人工智能编程助手。这款工具基于OpenAI的GPT-3模型进行训练&#xff0c;旨在帮助开发者更高效地编写代码。 二.功能介绍 智能代码补全&#xff1a;GitHub Cop…...

Unity类银河恶魔城学习记录13-1 p142 Save system源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili FileDataHandler.cs using System; using System.IO; using UnityEngine; p…...

【C++杂货铺】继承

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 继承的概念和定义 &#x1f4c2; 概念 &#x1f4c2; 定义 &#x1f4c1; 基类和派生类对象赋值转换 &#x1f4c1; 继承中的作用域 &#x1f4c1; 派生类的默认成员函数 构造函数 析构函数 拷贝构造函数 赋值重载…...

快速上手Linux核心命令

Linux 的重要性不用我多说了吧&#xff0c;大多数互联网公司&#xff0c;服务器都是采用的Linux操作系统 Linux是一个主要通过命令行来进行管理的操作系统。 只有熟练掌握Linux核心命令&#xff0c;在使用起来我们才会得心应手 这里给大家整理了Linux一些核心命令&#xff0…...

背 单 词 (考研词汇闪过)

单词&#xff1a; 买考研词汇闪过 研究艾宾浩斯遗忘曲线 https://www.bilibili.com/video/BV18Y4y1h7YR/?spm_id_from333.337.search-card.all.click&vd_source5cbefe6dd70d6d84830a5891ceab2bf9 单词方法 闪记背两排&#xff08;5min&#xff09;重复一遍&#xff08;2mi…...

数据库工具解析之 OceanBase 数据库导出工具

背景 大多数的数据库都配备了自己研发的导入导出工具&#xff0c;对于不同的使用者来说&#xff0c;这些工具能够发挥不一样的作用。例如&#xff1a;DBA可以使用导数工具进行逻辑备份恢复&#xff0c;开发者可以使用导数工具完成系统间的数据交换。这篇文章主要是为OceanBase…...

[Algorithm][滑动窗口][长度最小的子数组] + 滑动窗口原理

目录 0.滑动窗口原理讲解1.长度最小的子数组1.题目链接2.算法原理讲解3.代码实现 0.滑动窗口原理讲解 滑动窗口&#xff1a;“同向双指针”滑动窗口可处理「⼀段连续的区间」问题如何使用&#xff1f; left 0, right 0进窗口判断 是否出窗口 更新结果 -> 视情况而定 可能…...

.NET 发布,部署和运行应用程序

.NET应用发布 发布.Net应用有很多种方式&#xff0c;下面列举三种发布方式&#xff1a; 单文件发布跨平台发布Docker发布 单文件发布 右键工程&#xff0c;选择“发布”&#xff0c;部署模式选择“独立”&#xff0c;目标运行时选择自己想要部署到的系统&#xff0c;我这里用…...

B树(B-tree)

B树(B-tree) B树(B-tree)是一种自平衡的多路查找树&#xff0c;主要用于磁盘或其他直接存取的辅助存储设备 B树能够保持数据有序&#xff0c;并允许在对数时间内完成查找、插入及删除等操作 这种数据结构常被应用在数据库和文件系统的实现上 B树的特点包括&#xff1a; B树为…...

EelasticSearch是什么?及EelasticSearch的安装

一、概述 Elasticsearch 是一个基于 Apache Lucene 构建的开源分布式搜索引擎和分析引擎。它专为云计算环境设计&#xff0c;提供了一个分布式的、高可用的实时分析和搜索平台。Elasticsearch 可以处理大量数据&#xff0c;并且具备横向扩展能力&#xff0c;能够通过增加更多的…...

Python机器学习项目开发实战:如何进行语音识别

注意&#xff1a;本文的下载教程&#xff0c;与以下文章的思路有相同点&#xff0c;也有不同点&#xff0c;最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程&#xff1a;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 比赛日期和时间 报名截止时间&#xff1a;2024…...

【代码】Python3|Requests 库怎么继承 Selenium 的 Headers (2024,Chrome)

本文使用的版本&#xff1a; Chrome 124Python 12Selenium 4.19.0 版本过旧可能会出现问题&#xff0c;但只要别差异太大&#xff0c;就可以看本文&#xff0c;因为本文对新老版本都有讲解。 文章目录 1 难点解析和具体思路2 注意事项2.1 PDF 资源获取时注意事项2.2 Capabiliti…...

JAVA程序设计-对象设计

无论是根据某马还是某谷的适配教程做项目时候,发现了大部分都是重复的crud,大部分只要做好笔记复习即可,但是却往往忘记了编码设计,所以这里开始复习编码设计,对象设计中,长期使用Mp的那一套导致就是Service Mapper,一套梭哈完了,这样很容易忘记基本功夫 POJO&#xff1a; 简单…...

蓝桥杯2024年第十五届省赛真题-R 格式

找到规律后如下&#xff0c;只需要用高精度加法和四舍五入&#xff08;本质也是高精度加法就能做&#xff09;&#xff0c;如果没有找到规律&#xff0c;就得自己写高精度乘法和加法&#xff0c;不熟练很容易错。 //#include<bits/stdc.h> #include<iostream> #i…...

Linux服务器硬件及RAID配置

一、服务器硬件 塔式服务器&#xff1a;最初的服务器形态之一&#xff0c;类似于传统的台式电脑&#xff0c;但具有更强的处理能力和稳定性&#xff0c;适合小型企业或部门使用。 机架式服务器&#xff1a;设计为可安装在标准化机架内的模块化单元&#xff0c;可以有效地节省空…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...