Spring框架学习day4--Spring集成Mybatis(IOC)

article/2025/8/22 1:58:44

  • Spring集成Mybatis
    • 1.添加jar包(pom.xml)
    • 2.配置sqlSessionFactiory(spring.xml)
    • 3.再service类中注入Dao代理接口
    • 4.测试类
    • 5文件结构

Spring集成Mybatis

Spring集成Mybatis其核心是将SqlSessionFactory交由Spring管理,并由 Spring管理对dao接口的代理实现。 导入mybatisjar包

创建新的ssm项目为例文件结构如下

1.添加jar包(pom.xml)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>ssm</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.2.RELEASE</version></dependency><!-- spring-jdbc--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.2.RELEASE</version></dependency><!-- 阿里数据源--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><!--        mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.2</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency></dependencies>
</project>

image-20250529222630979

2.配置sqlSessionFactiory(spring.xml)

<!--    spring管理生成SqlSessionFactory--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="configLocation" value="classpath:mybatis.xml"></property>
<!--        指定配置文件--><property name="mapperLocations" value="classpath:mappers/*Mapper.xml">
<!--            指定文件地址--></property></bean>

生成接口代理(spring.xml)

<!--    spring管理生成接口代理对象--><bean id="mapperFactory" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="org.example.dao"></property>
<!--        对指定包下的接口进行扫描,并生成接口代理的对象--><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean>

完整spring.xml配置如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd
"><!--        开启注解扫描  对指定包下的注解进行扫描 ,检查添加spring类注解标签的类--><context:component-scan base-package="org.example" ></context:component-scan><context:property-placeholder location="config.properties"/><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><!--       方法一:通过配置文件配置数据源--><!--                <property name="driverClassName" value="com.mysql.jdbc.cj.Driver"/>--><!--        <property name="url" value="数据库连接/>--><!--        <property name="username" value="root"/>--><!--        <property name="password" value="root"/>--><!--        <property name="initialSize" value="1"/>--><!--        <property name="maxActive" value="1"/>--><!-- 方法二:通过注解配置数据源--><property name="driverClassName" value="${driverClassName}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/><property name="initialSize" value="${initialSize}"/><property name="maxActive" value="${maxActive}"/></bean>
<!--    spring管理生成SqlSessionFactory--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="configLocation" value="classpath:mybatis.xml"></property>
<!--        指定配置文件--><property name="mapperLocations" value="classpath:mappers/*Mapper.xml">
<!--            指定文件地址--></property></bean>
<!--    spring管理生成接口代理对象--><bean id="mapperFactory" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="org.example.dao"></property>
<!--        对指定包下的接口进行扫描,并生成接口代理的对象--><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean>
</beans>

注:对应的mybatis.xml文件有所变化

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><settings><!--        打印日志--><setting name="logImpl" value="STDOUT_LOGGING"/><!--            开启驼峰命名规则--><setting name="mapUnderscoreToCamelCase" value="true"/></settings><!--    为类配置起别名--><typeAliases><!--        下面别名怎么引用呢?  直接在xml文件中使用别名就可以了--><typeAlias type="org.example.model.Admin" alias="Admin"/></typeAliases>
</configuration>

3.再service类中注入Dao代理接口

@Service("loginService")
public class LoginService {@AutowiredLoginDao loginDao;public Admin login(Admin admin){return loginDao.login(admin);}
}

4.测试类

package org.example.test;import org.example.model.Admin;
import org.example.service.LoginService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class test {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");Admin admin = context.getBean("admin", Admin.class);admin.setAccount("admin");admin.setPassword("111");LoginService loginService = context.getBean("loginService", LoginService.class);Admin result = loginService.login(admin);System.out.println(result);}
}

5文件结构

image-20250529223641884


http://www.hkcw.cn/article/ksiNiSgaoO.shtml

相关文章

Nexus仓库数据高可用备份与恢复方案(上)

#作者&#xff1a;闫乾苓 文章目录 1、要解决的问题2、解决方案方案说明 3、方案验证部署nexus pvc部署nexus deployment部署nexus svc查看部署状态访问UI页面创建基于minio 的Blob Store 库准备测试数据 1、要解决的问题 Nexus使用容器化部署并使用NFS或者HostPath作为数据持…

今天北京最高气温32℃,午后阵风明显 出行注意防暑防风

今天白天多云,北风一级转南风三级,阵风六级,最高气温32℃;夜间多云,南转北风一二级,最低气温22℃。今天云量增多,气温仍较高,午后阵风明显,出行注意防暑防风勤补水。温红征 摄责任编辑:0882

工具识别系统Python+深度学习+人工智能+卷积神经网络算法+TensorFlow+图像识别

一、介绍 工具识别系统&#xff0c;使用Python作为主要编程语言&#xff0c;基于TensorFlow搭建卷积神经网络算法&#xff0c;通过收集了8种常见的日常工具图片&#xff08;“汽油罐&#xff08;Gasoline Can&#xff09;”, “锤子&#xff08;Hammer&#xff09;”, “钳子&…

歌手终于炒出新菜了!

歌手终于炒出新菜了!《歌手2025》迎来了一位新面孔,原创歌手兼音乐剧演员湛嘉丽。她凭借代表作《海鸥》展现了不俗的实力,网友们对这位新人充满期待,并评论说:“歌手终于炒出新菜了。”今年的《歌手》节目给了音乐剧很大的舞台,不仅打破了以往依赖“回锅肉”的模式,还注…

机器学习-线性回归基础

一、什么是回归 依据输入x写出一个目标值y的计算方程&#xff0c;求回归系数的过程就叫回归。简言之&#xff1a;根据题意列出方程&#xff0c;求出系数的过程就叫做回归。 回归的目的是预测数值型的目标值y&#xff0c;分类的目的预测标称型的目标值y。 二、线性回归 2.1线性…

什么是MSBC

mSBC&#xff08;Modified SubBand Coding&#xff09;是蓝牙协议中用于语音通话的一种音频编码格式&#xff0c;专为HFP/HSP&#xff08;蓝牙免提/耳机规范&#xff09;设计。它是对SBC&#xff08;SubBand Coding&#xff09;的改进版本&#xff0c;核心目标是在有限带宽下保…

2024长春全国邀请赛CCPC

文章目录 G - Platform GameI - The Easiest ProblemL - Recharge G - Platform Game 题目来源&#xff1a;G - Platform Game 解题思路 可以先对每个平台的高度从大到小排序&#xff0c;高度相同再根据横坐标从左往右排序&#xff0c;依次遍历每个平台&#xff0c;如果高…

王树森推荐系统公开课 排序06:粗排模型

shared bottom 表示神经网络被所有特征共享。精排模型主要开销在神经网络&#xff0c;神经网络很大且很复杂。 每做一次推荐&#xff0c;用户塔只做一次推理。物品塔存放入向量数据库。 后期融合模型常用于召回&#xff0c;前期融合模型常用于精排。 物品塔短时间内比较稳…

中国车企经营状况几何 高负债背后的研发投入

近日,“车圈恒大”这一话题在舆论界引起广泛关注,资本市场因此出现连续震荡,汽车股集体下跌。恒大的问题主要在于其“高负债、高周转、高风险”的扩张模式,最终导致资金链断裂。汽车行业是否存在类似现象?这种论调能否作为行业洞察?从可收集到的上市整车公司公开财务数据…

RPG16.重攻击

1.创建GA_HeavyAttackMaster 2.打开&#xff0c;然后设置实例化策略为每个实例化Actor 设置标签 创建子类GA_HeavyAttack_Axe,设置子类的标签 父类里添加print输出用于调试 3.添加输入&#xff0c;复制LightAttack&#xff0c;重命名 打开DA_InputConfig&#xff0c;添加输入…

Dify中 SYSTEM, USER, ASSISTANT 的关系、职责与使用方法

在Dify这类对话式AI应用构建平台中,SYSTEM, USER, ASSISTANT 这三种消息类型共同定义了与大型语言模型(LLM)交互的结构和上下文。它们的关系可以理解为: SYSTEM: 扮演着“导演”或“场景设定者”的角色。USER: 扮演着“提问者”或“任务发起者”的角色。ASSISTANT: 扮演着“…

藏海传全面登顶 肖战演技获肯定

藏海传全面登顶 肖战演技获肯定!《藏海传》全面登顶,肖战用实力证明了自己不仅仅是流量,也打破了很多人对流量的偏见,肖战演技值得被肯定藏海传全面登顶 肖战演技获肯定。责任编辑:0882

DFS:从入门到进阶的刷题指南

目录 一、基础DFS&#xff1a;递归实现、状态标记、回溯 全排列问题 组合问题 子集问题 二、网格DFS&#xff1a;二维矩阵遍历、连通块计数、方向数组 岛屿数量 单词搜索 被围绕的区域 三、 记忆化DFS&#xff1a;动态规划DFS&#xff0c;缓存中间结果 斐波那契数列&a…

《P2324 [SCOI2005] 骑士精神》

题目描述 输入格式 第一行有一个正整数 T&#xff08;T≤10)&#xff0c;表示一共有 T 组数据。 接下来有 T 个 55 的矩阵&#xff0c;0 表示白色骑士&#xff0c;1 表示黑色骑士&#xff0c;* 表示空位。两组数据之间没有空行。 输出格式 对于每组数据都输出一行。如果能在…

XMOS以全新智能音频及边缘AI技术亮相广州国际专业灯光音响展

全球领先的边缘AI和智能音频解决方案提供商XMOS于5月27-30日亮相第23届广州国际专业灯光、音响展览会&#xff08;prolight sound Guangzhou&#xff0c;以下简称“广州展”&#xff0c;XMOS展位号&#xff1a;5.2A66&#xff09;。在本届展会上&#xff0c;XMOS将展出先进的音…

吉林大学操作系统上级实验四(hash存储讲解及顺序存储文件管理实现)

此章节书上内容既包括文件操作&#xff0c;又包括hash存储的实现&#xff0c;较复杂。 先讲解一下涉及的文件操作&#xff1a; 文件操作&#xff1a; 一.creat系统调用 图一 create函数原型(图中pachname应为pathname) 当调用creat函数时&#xff0c;它会尝试创建一个名为p…

消息队列-kafka为例

目录 消息队列应用场景和基础知识MQ常见的应用场景MQ消息队列的两种消息模式如何保证消息队列的高可用&#xff1f;如何保证消息不丢失&#xff1f;如何保证消息不被重复消费&#xff1f;如何保证消息消费的幂等性&#xff1f;重复消费的原因解决方案 如何保证消息被消费的顺序…

基于Docker和YARN的大数据环境部署实践最新版

基于Docker和YARN的大数据环境部署实践 目的 本操作手册旨在指导用户通过Docker容器技术&#xff0c;快速搭建一个完整的大数据环境。该环境包含以下核心组件&#xff1a; Hadoop HDFS/YARN&#xff08;分布式存储与资源调度&#xff09;Spark on YARN&#xff08;分布式计算…

图片压缩工具 | 发布到咸鱼并配置网盘自动发货

OPEN-IMAGE-TINY&#xff0c;一个基于 Electron VUE3 的图片压缩工具&#xff0c;项目开源地址&#xff1a;https://github.com/0604hx/open-image-tiny 在上一篇文章ElectronVue3Rsbuild开发桌面应用中&#xff0c;我们已经完成了程序的开发&#xff0c;可以发布给别人使用啦…

ASP.NET Core OData 实践——Lesson7使用Reference增删改查一对多Navigation Property(C#)

大纲 主要模型设计支持的接口控制器设计数据源查询(GET)查询基类类型Entity的导航属性查询派生类型Entity的导航属性查询基类类型Entity的导航属性集合中指定Entity查询派生类类型Entity的导航属性集合中指定Entit 新增(POST)和 完整更新(PUT)向基类类型Entity的导航属性建立或…