Spring整合mybatis详解

Spring整合mybatis
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。本质上就是通过spring使用mybatis。

要通过spring整合mybatis,首先我们要先导入一些依赖。

完整的依赖:
junit包
mybatis包
mysql数据库包
spring相关的包,mvc、jdbc.
Aop织入包
Mybatis-spring包

junit junit 4.11 test org.aspectj aspectjweaver 1.9.4 org.projectlombok lombok 1.18.24 provided org.mybatis mybatis-spring 2.0.7 org.mybatis mybatis 3.5.10 org.springframework spring-webmvc 5.3.19 org.springframework spring-jdbc 5.3.19 mysql mysql-connector-java 5.1.37
官方文档:http://mybatis.org/spring/zh/index.html

注意我们要根据这个版本要求,导入对应的版本jar包,不然报错!
Spring整合mybatis版本要求:

环境问题搞定后,现在开始我们就要通过spring使用mybatis了。
通过spring使用mybatis,你会发现关于我们一开始使用mybatis的一些操作,如获取工厂、sqlsession对象的操作。我们通过spring的set注入(是ioc的),就能快速获取到sqlsession对象,最终要的一点就是获取到了sqlsession对象,我们还可以动态注入到一个接口的实现类里,通过这个接口的实现类我们可以通过获取到的sqlsession对象动态获取到dao接口的实现类,调用我们重写了dao的接口的方法。注意这里的dao接口的实现类是我们通过配置文件重写了这个接口的方法,获取到这个dao接口的实现类而已。底层本质上还是通过mybatis实现的。只不过说我们是通过spring使用mybatis实现的而已。

Spring使用mybatis第一步就是配置数据源:

在原先的mybatis中我们使用的数据源是POOLED,现在我们使用数据源就是spring的jdbc下的数据源。

第二步:通过spring获取到sqlfactory对象。

第三步:通过spring获取到sqlsession对象.

到这一步就完成了sqlsession获取到的整个过程,现在开始我们就能开始写dao接口的实现类,我们动态注入这个sqlsession对象,动态获取到dao接口的实现类吧!

第四步:编写接口的实现类并动态传入一个sqlsession对象。

通过set注入就是通过ioc的方式注入sqlsession对象,然后通过sqlsession对象获取到dao接口的实现类里所有重写dao接口的方法。

注意mybatis的spring中的sqlsession对象类型是sqlSessionTemplate对象类型.
private SqlSessionTemplate sqlSessionTemplate;

//通过Spring注入SqlSession对象.然后获取到sqlSession对象.
public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
this.sqlSessionTemplate = sqlSessionTemplate;
}

@Override
public List User() {
SelectUser selectUser = (SelectUser)sqlSessionTemplate.getMapper(SelectUser.class);//通过获取到的sqlsession对象通过getMapper获取到dao接口的实现类!注意这里的dao接口是获取到dao接口实现类里所有重写的方法.
return selectUser.User();
}

第五步:测试代码
@Test
public void Springread_User(){
ApplicationContext context = new ClassPathXmlApplicationContext(“Spring-mybatis_config.xml”);
SelectUserImpl selectUserImpl = (SelectUserImpl) context.getBean(“SelectUserImpl”);//获取到我们的bean所创建对象,注意我们在获取bean所创建的对象的时候,我们需要进行类型强转。
for (User user : selectUserImpl.User()) {
System.out.println(user);
}
}

总结:

上面就是通过·spring使用mybatis的整个过程。

可是我们可以想下,通过spring使用mybatis后,我们可以发现我们最后只需要获取一个关于这个接口的实现类即可,只不过这个接口的实现类就如同业务一样,我们明白在ioc架构中,我们是通过业务层动态创建出dao接口的实现类的,答案就是这里也是,我们写的这个接口实现类就如同业务一样,我们就是通过这个业务动态传入一个sqlsession对象,然后通过这个sqlsession对象动态获取到了关于这个dao接口的实现类,本质上就和那个业务很像吧,获取到了接口的实现类后,我们就可以调用关于重写了这个接口里的任意方法了。

究极精简spirng-mybatis
我们可以通过继承SqlSessionDaoSupport类,通过这个类下的getSqlSession方法(静态变量)获取到SqlSession对象,当然我们这个继承的类需要传入sqlSessionFactory,我们需要通过这个工厂获取到SqlSession对象,本质上就是省略了SqlSessionTemplate这个步骤.

接口实现类2
package Dao;

import org.mybatis.spring.support.SqlSessionDaoSupport;
import pojo.User;

import java.util.List;

public class SelectUserImpl2 extends SqlSessionDaoSupport implements SelectUser{
@Override
public List User() {
SelectUser selectUser = (SelectUser)getSqlSession().getMapper(SelectUser.class);
return selectUser.User();
}
}

配置文件:
注意我们需要sqlSessionFactory对象,给我们这个实现类的父类.

测试代码:
@Test
public void Springread_User2(){
ApplicationContext context = new ClassPathXmlApplicationContext(“Spring-mybatis_config.xml”);
SelectUserImpl2 selectUserImpl2 = (SelectUserImpl2) context.getBean(“SelectUserImpl2”);//获取到我们的bean所创建对象,注意我们在获取bean所创建的对象的时候,我们需要进行类型强转。
for (User user : selectUserImpl2.User()) {
System.out.println(user);
}
}

关于Spring的事务管理
首先第一步我们需要引入tx资源,引入这个资源的目的是为了配置事务的通知和管理.

xmlns:tx=http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd

引入资源后,我们现在对spring的事务管理进行介绍.

Spring对事务管理有2种方式:

声明式事务管理:Aop
编程式事务管理:需要在代码中,进行事务的管理。
第二种事务管理我们就不介绍了,在文档里有,这里主要介绍如何使用声明式事务管理。

第一步:在spirng配置文件中,我们需要开启事务的管理.注入spring的jdb下org.springframework.jdbc.datasource.DataSourceTransactionManager类文件,扔入数据源开启事务的管理。

第二步:声明式的事务管理的实现本身就是通过aop方式实现的,这里就是结合了Aop实现事务的织入,那么现在我们就需要配置事务的通知(说明要给哪些方法配置事务),我们还需要配置事务的传播特性:当然这里默认是用REQUIRED即可。

事务传播特性:配置事务的传播特性就是为了能新建出一个事务.

tx:attributes

第三步:配置好了事务的管理,我们现在就开始通过aop将我们的事务管理切入到切入点里,就是我们那些业务需求的方法.

aop:config

现在我们就完成了对我们业务所有需求的开启了业务管理了.
测试代码:
@Test
public void Spring_transaction(){
ApplicationContext context = new ClassPathXmlApplicationContext(“Spring-mybatis_config.xml”);
Spring_transaction spring_transaction = (Spring_transaction) context.getBean(“spring_transaction”);//获取到我们的bean所创建对象,注意我们在获取bean所创建的对象的时候,我们需要进行类型强转。
User user1 = new User(“wdnmd”,“Spring_transaction”,6);
spring_transaction.addUser(user1);
}

文章转自:Spring整合mybatis详解_Java-答学网

作者:答学网,转载请注明原文链接:http://www.dxzl8.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值