MyBatis-Spring整合

MyBatis-Spring整合

声明:本文章属于学习笔记,根据狂神说的Spring编写

Spring官方文档:Spring官方文档

一丶MyBatis-Spring整合方之一:

什么是 MyBatis-Spring?
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。 最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring。

1丶首先我们看这样的一段代码

    <!--DateSource: 就相当于使用spring来代替了Mybatis的配置
      spring包: org.springframework.jdbc.datasource.DriverManagerDataSource
    -->
    <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" />
        <property name="username" value="root"/>
        <property name="password" value="159814"/>
    </bean>

这段代码我想大家都很眼熟,其实就是配置Mybatis-config.xml的外部配置文件:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=159814

我们可以将他来替换,我们其实都知道Spring的配置文件其实都是用对象进行完成的,我们每创建一个< bean >标签,就会相对应的生成一个对象。
我们回顾以前的spring配置,如果我们在传入注入相应值得时候是对象那么我们就可以用ref进行中注入!

2丶

 <!--sqlSessionFactory对象的获取配置-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--在这里就相当于将上面的额DataSource的配置注入到下面的ref中来-->
        <property name="dataSource" ref="datasource"/>
          <!--绑定mybatis配置文件,因为访问的是spring,所以我们必须要绑定mybatis-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath:com/kdy/mapper/*.xml" />
    </bean>

在这里插入图片描述
在这里我们就是将我们的DataSource注入到sqlSessionforcty中。

这个里面的< bean >标签其实就是将我们的mybatis-config.xml完全的代替,我们在创建的mybatis-config.xml的时候里面可以什么都不写,也可以写,但是这个标签中的功能是和mybatis-config.xml功能完全一样的

这一步完全就是舍弃了mybatis的工具类,用以代替。因为我们的一些需求全部都在我们配置整合的文件中。

3丶

 <!--SqlSessionTemplate就是我们的SqlSession,我们可以用它来代替SqlSession-->

    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <!--SqlSessionTemplate并没有set注入,但是他可以用构造方法来进行注入-->
        <constructor-arg index="0" ref="sqlSessionFactory" />
    </bean>

SqlSessionTemplate就是我们的SqlSession,我们可以用它来代替SqlSession,这是一个固定的写法,我们整合的时候,必须有他。
值得注意的是我们的SqlSessionTemplate是没有set方法进行注入的,但是我们可以用构造方法进行注入:

在这里插入图片描述

4丶创建响应的接口实现类:

public class UserMapperImpl  implements UserMapper{
    private SqlSessionTemplate sqlSession;

    public void setSqlSession(SqlSessionTemplate sqlSession) {
        this.sqlSession = sqlSession;
    }
    @Override
    public List<User> query() {
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        return mapper.query();
    }
}

在上面我就说过一点,我们没创建一个< bean >标签,就会创建一个对象出来,所以:
在这里插入图片描述我们完全可以在配置文件中创建对象,这个userMapper对象也就相应的拥有SqlSessionTemplate的功能。

5丶测试类测试:

public class MyTest {
    @Test
    public void test1() throws Exception {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-dao.xml");
        UserMapper mapper = context.getBean("userMapper", UserMapper.class);
        List<User> query = mapper.query();
        for (User user : query) {
            System.out.println(user);
        }
    }
}

执行结果:
在这里插入图片描述

二丶MyBatis-Spring整合方之二:

在这里插入图片描述

第二种方法可以看看官方的文档,其实和第一个也差不多。

Mybatis-Spring官方文档:Mybatis-Spring

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值