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实例
     */
    @Bean
    public DruidDataSource getDruidDataSource() {
        // 实例化Druid数据源对象
        DruidDataSource dataSource = new DruidDataSource();
        // 设置数据库驱动类名
        dataSource.setDriverClassName(driver);
        // 设置数据库连接URL
        dataSource.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 实例
     */
    @Bean
    public SqlSessionFactoryBean getSqlSessionFactoryBean(@Autowired DataSource dataSource) {
        SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
        // 设置数据源
        ssfb.setDataSource(dataSource);
        return ssfb;
    }

    /**
     * 映射配置
     * Mapper 扫描配置
     * 配置 Mapper 接口的扫描路径,用于自动注册 Mapper 接口为 Spring Bean
     * @return 配置好的 MapperScannerConfigurer 实例
     */
    @Bean
    public 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 {

    @Autowired
    private DeptMapper deptMapper;

    @Test
    public void findAll() {
        System.out.println(deptMapper.findAll());
    }
}

       到现在Spring整合Mybatis就完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值