第七章 Spring框架整合MyBatis框架(2023版本IDEA)


  第六章中已经学习了MyBatis框架和Spring框架,还讲到Spring框架是一个超级黏合平台,能够以高度的开放整合其他优秀的框架。(如果没有了解可以去我主页看看 第一至六章 的内容来学习)本章将带同学们学习使用Spring框架整合MyBatis框架的方法。

7.1基本整合方式

  Spring框架整合其他框架的本质其实就是把其他框架交给Spring框架管理。Spring框架通过IOC、AOP等机制实现与其他框架的连接,最终建立一个低耦合的应用架构,这大大增强了系统的灵活性,便于功能扩展。在本章中,我们将利用Spring框架对MyBatis框架进行整合,在对组件实现解耦的同时,还能使MyBatis框架的使用变得更加方便和简单。

7.1.1 整合思路梳理

  MyBatis框架主要是通过SqlSession实例实现对数据的操作,而SqlSession实例是通过SqlSessionFactory创建的,SqlSessionFactory实例又是由SqlSessionFactoryBuilder依据MyBatis配置文件中的数据源、SQL映射文件等信息构建的,这些对象之间的关系。

7.1.2 整合所需的依赖及配置

  在Java项目中整合数据库事务管理通常涉及使用Spring框架的@Transactional注解以及配置数据源和事务管理器。这里,我将提供一个基本的示例,展示如何在Spring Boot项目中整合JPA(Java Persistence API)和Hibernate作为JPA的实现,并配置事务管理。

  1. 添加依赖
    首先,你需要在你的pom.xml(如果你使用的是Maven)中添加Spring Boot的起步依赖以及JPA和数据库的依赖。以下是一个示例,它包含了Spring Boot的Web、JPA和H2数据库的依赖:
<dependencies>  
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-web</artifactId>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-data-jpa</artifactId>  
    </dependency>  
    <dependency>  
        <groupId>com.h2database</groupId>  
        <artifactId>h2</artifactId>  
        <scope>runtime</scope>  
    </dependency>  
    <!-- 其他依赖 -->  
</dependencies>
  1. 配置数据源和JPA
    在Spring Boot中,你可以通过application.properties或application.yml文件来配置数据源和JPA。以下是一个application.properties的示例:
# 数据源配置  
spring.datasource.url=jdbc:h2:mem:testdb  
spring.datasource.driverClassName=org.h2.Driver  
spring.datasource.username=sa  
spring.datasource.password=password  
  
# JPA配置  
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect  
spring.jpa.hibernate.ddl-auto=update  
spring.jpa.show-sql=true

这里配置了内存中的H2数据库,并设置了Hibernate的DDL生成策略为update(在启动时自动更新数据库结构),以及显示SQL语句。

  1. 实体类和仓库
    你需要定义实体类和对应的JPA仓库。这里是一个简单的实体类示例:
import javax.persistence.Entity;  
import javax.persistence.GeneratedValue;  
import javax.persistence.GenerationType;  
import javax.persistence.Id;  
  
@Entity  
public class User {
     
  
    @Id  
    @GeneratedValue(strategy = GenerationType.IDENTITY)  
    private Long id;  
  
    private String name;  
  
    // 构造器、getter和setter省略  
}

仓库接口:

import org.springframework.data.jpa.repository.JpaRepository;  
  
public interface UserRepository extends JpaRepository<User, Long> {
     
    // 你可以在这里定义查询方法,但JpaRepository已经提供了很多基本方法  
}
  1. 服务层和事务管理
    在服务层中,你可以使用@Transactional注解来声明事务的边界。
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Service;  
import org.springframework.transaction.annotation.Transactional;  
  
@Service  
public class UserService {
     
  
    @Autowired  
    private UserRepository userRepository;  
  
    @Transactional  
    public void addUser(User user) {
     
        userRepository.save(user);  
        // 这里可以添加更多的数据库操作,它们都将在同一个事务中执行  
    }  
}
  1. 控制器
    最后,你可以创建一个控制器来触发服务层的方法。
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.web.bind.annotation.PostMapping;  
import org.springframework.web.bind.annotation.RequestBody;  
import org.springframework.web.bind.annotation.RestController;  
  
@RestController  
public class UserController {
     
  
    @Autowired  
    private UserService userService;  
  
    @PostMapping("/users")  
    public String addUser(@RequestBody User user) {
     
        userService.addUser(user);  
        return "User added successfully";  
    }  
}

这个简单的例子展示了如何在Spring Boot项目中整合JPA和事务管理。Spring Boot会自动配置数据源、JPA和事务管理器,你只需要关注你的业务逻辑即可。

7.1.3 使用Spring配置文件配置数据源

  在Spring中,使用配置文件(如XML配置文件)来配置数据源是一种常见的做法,特别是在不使用Spring Boot的项目中。以下是一个简单的示例,展示了如何在Spring的XML配置文件中配置一个数据源(例如,使用HikariCP作为连接池),并配置JPA或Hibernate的SessionFactory(如果你使用的是Hibernate作为JPA实现)。

  1. 添加依赖
    首先,确保你的项目中包含了数据库驱动、HikariCP连接池以及Hibernate(如果你使用Hibernate)的依赖。如果你使用Maven,可以在pom.xml中添加这些依赖。但请注意,下面的示例主要关注于Spring配置部分。

  2. Spring XML配置文件
    下面是一个Spring XML配置文件的示例,它配置了数据源和Hibernate的SessionFactory。

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
       xsi:schemaLocation="http://www.springframework.org/schema/beans  
                           http://www.springframework.org/schema/beans/spring-beans.xsd  
                           http://www.springframework.org/schema/tx  
                           http://www.springframework.org/schema/tx/spring-tx.xsd">  
  
    <!-- 数据源配置 -->  
    <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"  
          init-method="init" destroy-method="close">  
        <property name="d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值