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

Spring整合Mybatis

        在现代Java企业级应用开发中,Spring框架和MyBatis作为两个极为重要的技术栈,各自发挥着不可替代的作用。Spring框架提供了全面的基础设施支持,包括依赖注入、事务管理、AOP等核心功能,而MyBatis则是一个优秀的持久层框架,以其灵活的SQL映射和简单的API著称。

将这两者整合使用,可以充分发挥各自的优势:

  • Spring的IoC容器可以管理MyBatis的组件生命周期

  • Spring的事务管理能够为MyBatis操作提供声明式事务支持

  • MyBatis的灵活性弥补了Spring Data JPA在某些复杂SQL场景下的不足

  • 简化开发通过整合可以减少大量样板代码,提高开发效率

Spring框架整合Mybatis分为以下这么几步:

  1. 创建maven模块
  2. 导入依赖坐标
  3. 创建Spring配置类
  4. 进行整合测试

1.创建模块

2. 导入依赖坐标

        <!-- Spring上下文支持 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.12</version></dependency><!-- Java Activation Framework API --><dependency><groupId>javax.activation</groupId><artifactId>javax.activation-api</artifactId><version>1.2.0</version></dependency><!-- MyBatis 核心库 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency><!-- MyBatis 与 Spring 集成 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>3.0.3</version></dependency><!-- MySQL JDBC驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><!-- 阿里巴巴数据库连接池 druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.20</version></dependency><!-- Spring JDBC 支持 --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>6.1.12</version></dependency><!-- Spring 测试支持 --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>6.1.14</version></dependency><!-- 单元测试框架JUnit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><!-- Lombok 简化Java实体类开发 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version></dependency>

3. 创建核心配置类

package com.it.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;@Configuration
// 扫描包
@ComponentScan("com.it")
public class SpringConfig {
}

        到此,Spring框架创建成功了

4. Spring整合

4.1 整合jdbc(数据库)

        1)首先需要在jdbc.properties配置文件中配置需要连接的数据库,连接池,用户名密码

# 数据库连接URL,使用MySQL数据库,连接到本地的db1数据库
jdbc.url=jdbc:mysql:///db1
# JDBC驱动类名,使用的是com.mysql.jdbc.Driver
jdbc.driver=com.mysql.jdbc.Driver
# 数据库用户名,用于连接数据库的用户为root
jdbc.username=root
# 数据库密码,连接数据库的密码为1234
jdbc.password=1234

        2)在jdbc整合配置类中扫描配置类,拿到数据库相关信息

package com.it.config;import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;@Component
//1.扫描配置文件
@PropertySource("jdbc.properties")
public class JdbcConfig {//    2.属性注入@Value("${jdbc.url}")private String url;@Value("${jdbc.driver}")private String driver;@Value("${jdbc.username}")private String username;@Value("${jdbc.password}")private String password;//    使用工厂实例化整合 druid/*** 创建并配置Druid数据源实例* 通过@Bean注解将数据源对象纳入Spring容器管理* @return 配置好的DruidDataSource实例*/@Beanpublic DruidDataSource getDruidDataSource() {// 实例化Druid数据源对象DruidDataSource dataSource = new DruidDataSource();// 设置数据库驱动类名dataSource.setDriverClassName(driver);// 设置数据库连接URLdataSource.setUrl(url);// 设置数据库登录用户名dataSource.setUsername(username);// 设置数据库登录密码dataSource.setPassword(password);// 返回配置完成的数据源实例return dataSource;}}

        测试一下

        至此,数据库就整合完了✌

4.2 整合Mybatis

        整合Mybatis分为两步

  • 整合核心配置文件
  • 整合映射配置文件

在MybatisConfig配置类中进行以下配置

package com.it.config;import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;import javax.sql.DataSource;@Component
public class MybatisConfig {/*** 核心配置* 配置 SqlSessionFactoryBean,用于集成 MyBatis 与 Spring* @param dataSource 自动注入的数据源* @return 配置好的 SqlSessionFactoryBean 实例*/@Beanpublic SqlSessionFactoryBean getSqlSessionFactoryBean(@Autowired DataSource dataSource) {SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();// 设置数据源ssfb.setDataSource(dataSource);return ssfb;}/*** 映射配置* Mapper 扫描配置* 配置 Mapper 接口的扫描路径,用于自动注册 Mapper 接口为 Spring Bean* @return 配置好的 MapperScannerConfigurer 实例*/@Beanpublic MapperScannerConfigurer mapperScannerConfigurer() {MapperScannerConfigurer msc = new MapperScannerConfigurer();// 设置 Mapper 接口所在的基包路径msc.setBasePackage("com.it.mapper");return msc;}}

        创建pojo、mapper进行测试

  • pojo实体类
package com.it.pojo;import lombok.Data;@Data
public class Dept {private int id;private String dname;private String loc;
}
  • mapper层
package com.it.mapper;import com.it.pojo.Dept;
import org.apache.ibatis.annotations.Select;import java.util.List;public interface DeptMapper {@Select("select * from dept")public List<Dept> findAll();
}
  • test测试
package com.it;import com.alibaba.druid.pool.DruidDataSource;
import com.it.config.SpringConfig;
import com.it.mapper.DeptMapper;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;import java.sql.SQLException;public class Test {public static void main(String[] args) throws SQLException {AnnotationConfigApplicationContext ioc = new AnnotationConfigApplicationContext(SpringConfig.class);DeptMapper deptMapper = ioc.getBean(DeptMapper.class);System.out.println(deptMapper.findAll());}
}

        成功打印✌

4.3 整合junit测试

package com.it.mapper;import com.it.config.SpringConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import static org.junit.Assert.*;/*** spring整合junit测试* @RunWith 在测试启动的时候 加载spring容器* @ContextConfiguration 配置spring容器*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class DeptMapperTest {@Autowiredprivate DeptMapper deptMapper;@Testpublic void findAll() {System.out.println(deptMapper.findAll());}
}

       到现在Spring整合Mybatis就完成了

相关文章:

  • springboot2.x升级springboot3.x
  • 10万QPS高并发请求,如何防止重复下单
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
  • SeaweedFS S3 Spring Boot Starter
  • 监控脚本源码
  • 【阿里巴巴 x 浙江大学】信息与交互设计 - 交互设计概述
  • 算数运算符
  • 基于Vue3.0的在线工具网站
  • Day16
  • C盘的“下载”修改位置时出错了,怎么还原
  • three.js 零基础到入门
  • 软件更新机制的测试要点与稳定性提升
  • python中使用LibreHardwareMonitorLib.dll获取电脑硬件信息~~【不用同步打开exe文件】
  • 【LangChain4J】LangChain4J 第三弹:多模态与文生图的实现
  • 删除有序数组中的重复项
  • CZGL.SystemInfo:跨平台的系统信息获取库
  • Deep Research实践
  • 程序代码篇---随机数与随机数种子
  • 【Java学习笔记】Arrays类
  • C++17 和 C++20 中的新容器与工具:std::optional、std::variant 和 std::span
  • 翔安区建设网站/百度教育小程序
  • 福建省建设工程继续教育网站/域名注册阿里云
  • 打电话沟通做网站/360seo关键词优化
  • 做直播网站赚钱吗/百度推广区域代理
  • 网站建设步骤与时间表/2345导航网址
  • 东莞电子网站建设/计算机培训机构哪个最好