4. MyBatis如何与Spring集成?有哪些常见的配置方式?

news/2024/9/19 0:52:31/ 标签: mybatis, spring, java

MyBatis 可以通过多种方式与 Spring 集成,通常通过配置 Spring 来管理 MyBatis 的 SqlSessionFactoryMapper,并使用 Spring 的事务管理功能来管理数据库事务。以下是 MyBatis 与 Spring 集成的常见配置方式:

1. 基于 XML 配置的集成

这是传统的方式,通过 Spring 的 XML 配置文件来集成 MyBatis。

关键步骤:

  1. 配置数据源: 配置数据库连接池,并将其注入到 MyBatis 中。

    java"><bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"><property name="driverClassName" value="com.mysql.cj.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/mydb" /><property name="username" value="root" /><property name="password" value="password" />
    </bean>
  2. 配置 SqlSessionFactory: 通过 SqlSessionFactoryBean 来配置 MyBatis。

    java"><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="mapperLocations" value="classpath*:mapper/*.xml" /><property name="configLocation" value="classpath:mybatis-config.xml" />
    </bean>
  3. 配置事务管理器: 使用 Spring 的 DataSourceTransactionManager 来管理事务。

    java"><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" />
    </bean>
  4. 扫描 Mapper 接口: 通过 MapperScannerConfigurer 扫描 MyBatis 的 Mapper 接口。

    java"><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.example.mapper" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>

2. 基于 Java 配置(Java Config)的集成

使用 Java 配置的方式更符合 Spring Boot 的风格,也更现代化。

关键步骤:

  1. 配置数据源: 使用 Spring 的 DataSource 配置数据库连接池。

    java">@Configuration
    public class DataSourceConfig {
    ​@Beanpublic DataSource dataSource() {BasicDataSource dataSource = new BasicDataSource();dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");dataSource.setUsername("root");dataSource.setPassword("password");return dataSource;}
    }
  2. 配置 SqlSessionFactory: 使用 SqlSessionFactoryBean 来创建 SqlSessionFactory

    java">@Configuration
    public class MyBatisConfig {
    ​@Beanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));return sessionFactory.getObject();}
    }
  3. 配置事务管理器: 使用 DataSourceTransactionManager 来管理事务。

    java">@Configuration
    public class TransactionConfig {
    ​@Beanpublic DataSourceTransactionManager transactionManager(DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}
    }
  4. 扫描 Mapper 接口: 使用 @MapperScan 注解来扫描 MyBatis 的 Mapper 接口。

    java">@Configuration
    @MapperScan("com.example.mapper")
    public class MyBatisMapperScannerConfig {
    }

3. Spring Boot 集成 MyBatis

Spring Boot 中 MyBatis 的集成更加简单,通常只需要通过添加依赖和少量配置即可完成。

关键步骤:

  1. 添加依赖: 在 pom.xml 中添加 MyBatis 和 Spring Boot Starter 的依赖。

    java"><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version>
    </dependency>
  2. 配置数据源: 在 application.propertiesapplication.yml 中配置数据源。

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

  3. 扫描 Mapper 接口: 使用 @MapperScan 注解来扫描 Mapper 接口。

    java">@SpringBootApplication
    @MapperScan("com.example.mapper")
    public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
    }

  4. 配置 Mapper 文件路径(可选): 如果使用 XML Mapper 文件,需要在 application.properties 中指定路径。

    java">mybatis.mapper-locations=classpath:mapper/*.xml

总结

MyBatis 与 Spring 的集成可以通过 XML 配置、Java Config 以及 Spring Boot 的方式实现。XML 配置适合于老项目,Java Config 和 Spring Boot 的配置更加现代化且易于维护。通过这些集成方式,MyBatis 可以充分利用 Spring 的 IOC、AOP 和事务管理等特性,实现更加简洁和高效的数据访问层开发。


http://www.ppmy.cn/news/1519741.html

相关文章

交叉编译 gmp

文章目录 交叉编译 gmp1 概述2 源码下载2.1 官网下载2.2 使用 apt source 下载 3 交叉编译4 关于 DESTDIR 的说明 交叉编译 gmp 1 概述 GMP (GNU Multiple Precision Arithmetic Library) 是一个用于任意精度计算设计的数学库&#xff0c;它的主要目标应用是密码学应用和研究…

PHP:构建高效动态网页的基石

PHP:构建高效动态网页的基石 在当今的互联网世界中,PHP作为一种服务器端脚本语言,依然占据着不可替代的地位。自1995年诞生以来,PHP凭借其简洁的语法、丰富的功能和广泛的数据库支持,成为了开发动态网页和Web应用的首选语言之一。本文将深入探讨PHP的核心优势、最新发展动…

内存管理篇-20 Linux虚拟内存管理

1.虚拟地址的经典布局 这里的内容比较少。只要就是内核用户空间的划分。内核空间又有自己的划分。也需要注意一下每个区域的性能。理论上线性映射是最简单的&#xff0c;所以性能最高。同时&#xff0c;注意内核空间是可以配置的&#xff0c;并不是都3:1。 2.ARM32下的内存…

android 离线的方式使用下载到本地的gradle

1、android studio在下载gradle的时候&#xff0c;特别慢&#xff0c;有的时候会下载不完的情况&#xff0c;这样我们就要离线使用了。 2、下载Gradle Gradle | Releases 或者 Releases gradle/gradle GitHub Gradle | Releases 这里我们下载8.10 complete版本&#xff0c…

数据库(MySQL)的基本操作

1.简介 &#xff08;1&#xff09;数据库 1.数据库&#xff08;Data Base&#xff0c;简称DB&#xff09;&#xff1a;长期保存在计算机的存储设备上&#xff0c;数据是按照一定的规则组织起来的&#xff0c;能被用户、应用平台共享的数据集合。&#xff08;存储、维护和管理…

C++使用日志库经验总结

1、log4cpp日志源文件路径设置 在 Visual Studio 中&#xff0c;C 项目的日志格式可以通过设置项目的属性来调整。如果你想要使用完整路径来显示诊断消息&#xff0c;可以在项目属性中的“C/C”选项卡下的“高级”属性页中找到“使用完整路径”&#xff08;/FC&#xff09;选项…

【设计模式】详细解释工厂模式和策略模式的区别,并给出形象生动的示例说明

工厂模式&#xff08;Factory Pattern&#xff09;和策略模式&#xff08;Strategy Pattern&#xff09;都是设计模式中的重要概念&#xff0c;它们用于解决不同的设计问题。下面我会详细解释它们的区别&#xff0c;并给出示例。 工厂模式 定义&#xff1a; 工厂模式是一种创…

outlook在“对我发送的邮件应用规则”时只能移动邮件副本的问题和解决方案

outlook在“对我发送的邮件应用规则时”只能移动邮件副本的问题 问题描述问题的解决方案第一步第二步 其他说明参考 问题描述 如果我们想对自己发送的邮件进行分类&#xff0c;可以使用规则将已发送的邮件移动到指定文件夹中&#xff0c;但是。当操作对象为“自己发送的邮件时…

3. MyBatis 执行原理了解吗?

MyBatis 是一个半自动化的持久层框架&#xff0c;它通过配置文件或注解将 SQL 语句与 Java 对象进行映射&#xff0c;从而简化数据库访问操作。MyBatis 的执行原理涉及多个核心组件和步骤&#xff0c;以下是对 MyBatis 执行原理的详细说明&#xff1a; 1. MyBatis 的核心组件 S…

MFC工控项目实例之八选择下拉菜单添加打钩图标

承接专栏《MFC工控项目实例之七点击下拉菜单弹出对话框》 具体添加菜单栏参考我的博客文章《MFC工控项目实例之七点击下拉菜单弹出对话框》 这里只给出相关代码 1、在SEAL_PRESSUREDlg.h文件中添加代码 class CSEAL_PRESSUREDlg : public CDialog { // Construction public:..…

PMP核心知识点—之项目运行环境

知识点1&#xff1a;项目合规性 不合规的项目就不应该做。 知识点2&#xff1a;项目影响两大因素 组织过程资产、事业环境因素 知识点3&#xff1a;职能型以及项目型组织结构 知识点4&#xff1a;矩阵型组织结构 弱矩阵—平衡矩阵—强矩阵 (项目经理权力的强弱) 知识点5&am…

开放式耳机的优缺点?音质好吗?分享四款开放式蓝牙耳机

作为蓝牙耳机的重度使用患者&#xff0c;我认为开放式耳机音质的好坏取决的因素有好多&#xff0c;包括不同的品牌、不同的‌型号及不同的产品所采用的声学技术&#xff0c;而且开放式耳机的音质好不好也是取决使用者的需求的&#xff0c;有些开放式耳机能提供更清晰的人声音频…

PostgreSQL技术内幕3:PG逻辑存储层级和物理存储结构

目录 0.概述1.PG数据组织&#xff08;逻辑包含关系&#xff09;2.存储目录3.文件布局4.页内数据存储和TOAST策略 0.概述 本篇用来介绍PG存储的逻辑层级关系&#xff0c;database->schema,到schema中可以存在的各种信息&#xff0c;像table&#xff0c;索引等&#xff08;理…

谷歌浏览器与edge哪个好用

浏览器是我们工作和生活中的重要工具&#xff0c;其中谷歌浏览器与edge是两款备受关注的浏览器工具。那么这二者中&#xff0c;哪一款更胜一筹呢&#xff1f;本文将比较这两款浏览器的功能、性能和用户体验等&#xff0c;帮助大家做出明智的选择。 谷歌浏览器的历史与发展&…

高级java每日一道面试题-2024年9月01日-基础篇-事务的四个特性(ACID)分别是什么?

如果有遗漏,评论区告诉我进行补充 面试官: 事务的四个特性&#xff08;ACID&#xff09;分别是什么&#xff1f; 我回答: 事务的四个特性&#xff08;ACID&#xff09;是经常被提及的重要概念&#xff0c;特别是在处理数据库操作时。ACID代表原子性&#xff08;Atomicity&am…

华为管理工程与管理工程部

我们经常讲管理是一项系统工程&#xff0c;但在企业实际的管理建设和改进中&#xff0c;往往又并没有把管理当作一项系统工程来对待。在这方面&#xff0c;汉捷咨询董事长胡红卫先生认为华为的做法和经验值得企业借鉴。 华为管理工程部成立的背景 1996年初&#xff0c;华为公…

Linux:网络编程之TCP/IP模型,UDP协议

一、OSI模型七层结构 OSI&#xff08;Open Systems Interconnection&#xff09;模型&#xff0c;即开放系统互连参考模型&#xff0c;是一个概念性框架&#xff0c;用于促进全球通信。它定义了网络通信的七层结构&#xff0c;每一层都执行特定的功能&#xff0c;并且每一层都使…

Driver.js——实现页面引导

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

秋招/春招投递公司记录表格

最近在准备秋招&#xff0c;在各个平台投递秋招简历&#xff0c;什么官网&#xff0c;邮箱&#xff0c;boss&#xff0c;应届生各个平台上&#xff0c;投递的平台比较多&#xff0c;比较乱&#xff0c;因此自己想将这些平台投递记录都收集到一个表格上&#xff0c;所以在腾讯文…

基于 R 语言的深度学习——简单回归案例

近年来深度学习在人工智能领域飞速发展&#xff0c;各行业的学者、研究人员纷纷涌入研究热潮。本文将从 R 语言角度来介绍深度学习并解决以下几个问题&#xff1a; 什么是深度学习&#xff1f; 相关深度学习包有哪些&#xff1f; 如何配置工作环境&#xff1f; 如何使用神经…