Spring 与 Mybatis整合
2021-05-05 07:29
标签:空闲 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的配置文件中就不再需要配置数源信息。这里只需要使用和
整合
传统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
上一篇:c++怎么现在不坑
文章标题:Spring 与 Mybatis整合
文章链接:http://soscw.com/index.php/essay/82638.html