Spring 与 Mybatis整合

2021-05-05 07:29

阅读:597

标签:空闲   test   spring框架   oct   unit   nts   ret   数据库连接   lang   

准备所需JAR包

技术图片
技术图片
技术图片

编写配置文件

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_mybatis
jdbc.username=root
jdbc.password=root
jdbc.maxTotal=30
jdbc.maxIdle=10
jdbc.initialSize=5

连接数据库的基本4项外,还配置了数据库连接池的最大连接数(maxTotal)、最大空闲连接数(maxIdle)以及初始化连接数(initialSize)

applicationContext. xml

??首先定义了读取properties文件的配置,然后配置了数据源,接下来配置了事务管理器并开启了事务注解,最后配置了MyBatis工厂来与 Spring整合。其中,MyBatis工厂的作用就是构建SqlSessionFactory,它是通过 MyBatis-spring包中提供的org. mybatis.
Spring.SqlSessionFactoryBean类来配置的。通常,在配置时需要提供两个参数:一个是数据源,另一个是MyBatis的配置文件路径。这样Spring的loC容器就会在初始化id为 sqlSessionFactory的Bean时解析MyBatis的配置文件,并与数据源一同保存到 Spring的Bean中。

mybatis-config. xml


		...
	

由于在 Spring中已经配置了数据源信息,所以在MyBatis的配置文件中就不再需要配置数源信息。这里只需要使用和元素来配置文件别名以及指定Mapper文件位置即可

整合

传统DAO方式的开发整合

??采用传统DAO开发方式进行MyBatis与Spring框架的整合时,我们需要编写DAO接口以及接口的实现类,并且需要向DAO实现类中注入SqlSessionFactory,然后在方法体内通过 SqlSessionFactory创建SqlSession。为此,我们可以使用mybatis-spring包中所提供的 SqlSessionTemplate类或 SqlSessionDaoSupport类来实现此功能。这两个类的描述如下:
??SqlSessionTemplate:是mybatis-spring的核心类,它负责管理MyBatis的SqlSession,调用MyBatis的SQL方法。当调用SQL方法时,SqlSessionTemplate将会保证使用的 SqlSession和当前Spring的事务是相关的。它还管理 SqlSession的生命周期,包含必要的关闭、提交和回滚操作。
??SqlSessionDaoSupport:是一个抽象支持类,它继承了 DaoSupport类,主要是作为DAO的基类来使用。可以通过SqlSessionDaoSupport类的getSqlSession()方法来获取所需的SqISession。
UserMapper.xml:

UserDaolmp.java:

package com.ssm.dao.impl;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import com.ssm.dao.UserDao;
import com.ssm.po.User;
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
	public User findUserById(Integer id) {
		return this.getSqlSession().selectOne("com.ssm.po.UserMapper.findUserById", id);
	}
}

??UserDaolmpl类继承了SqlSessionDaoSupport并实现了UserDao接口。其中, SqlSessionDaoSupport类在使用时需要一个 SqlSessionFactory或一个SqlSessionTemplate对象,所以需要通过Spring给SqlSessionDaoSupport类的子类对象注入一个 SqlSessionFactory或SqlSessionTemplate。这样,子类中就能通过调用SqlSessionDaoSupport类的getSqlSession()方法来获取SqISession对象,并使用SqISession对象中的方法了。

DaoTest. java:

package com.ssm.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.ssm.dao.UserDao;
import com.ssm.po.User;
public class UserDaoTest {
	@Test
	public void findUserByIdDaotest(){
		//1.初始化Spring容器,加载配置文件
		ApplicationContext applicationContext=
new ClassPathXmlApplicationContext("applicationContext.xml");
		//2.通过容器获取userDao实例
		UserDao userDao=(UserDao)applicationContext.getBean("userDao");
		User user=userDao.findUserById(1);
		System.out.println(user);
	}
}

Mapper接口方式的开发整合

基于 MapperFactoryBean的整合

UserMapper. java

package com.ssm.mapper;
import com.ssm.po.User;
public interface UserMapper {
	public User findUserById(Integer id);
}

UserMapper.xml


@Test
public void findUserByldMapperTest(){
	ApplicationContext applicationContext=
new ClassPathXmlApplicationContext("applicationContext.xml");
	UserMapper userMapper=(UserMapper)applicationContext.getBean("userMapper");
	User user=userMapper.findUserById(1);
	System.out.println(user);
}

基于 MapperScannerConfigurer的整合


	

Spring 与 Mybatis整合

标签:空闲   test   spring框架   oct   unit   nts   ret   数据库连接   lang   

原文地址:https://www.cnblogs.com/zq98/p/13193262.html


评论


亲,登录后才可以留言!