mybatis和spring整合

作者: 幻影翔 | 来源:发表于2018-05-28 16:54 被阅读146次

整合思路

  • 1、让spring管理SqlSessionFactory
  • 2、让spring管理mapper对象和dao。
    使用spring和mybatis整合开发mapper代理及原始dao接口。
    自动开启事务,自动关闭 sqlsession.
  • 3、让spring管理数据源( 数据库连接池)

整合结构

框架

导jar包

  • mybatis框架的包
  • spring框架的包
  • 数据库驱动包
  • mybatis和spring的整合包

配置文件

Mybatis的配置文件SqlMapConfig.xml

  • 只配置别名、settings、mappers,数据源不在这里配置

    <!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    <!-- 定义 别名 -->
      <typeAliases>
      <!-- 批量别名定义 指定包路径,自动扫描包下边的pojo,定义别名,别名默认为类名(首字母小写或大写) -->
          <package name="po" />
      </typeAliases>
    
      <mappers>
      <!-- 加载原始dao使用的user.xml -->
          <mapper resource="config/sqlmap/User.xml"/>
      <!--读取mapper下的xml文件-->
          <package name="mapper" />
      </mappers>
    
    </configuration>
    

applicationContext.xml

1、数据源(dpcp连接池)
2、SqlSessionFactory
3、mapper或dao

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd ..........等约束
">

<!-- 加载配置文件 -->
<context:property-placeholder location="classpath:config/db.properties"  />
<!-- 数据源配置 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="maxActive" value="10" />
    <property name="maxIdle" value="5" />
</bean>


<!-- SqlsessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 数据源 -->
    <property name="dataSource" ref="dataSource"/>
    <!-- mybatis配置文件 -->
    <property name="configLocation" value="classpath:config/mybatis/SqlMapConfig.xml"/>
</bean>

<!-- 配置dao -->
<bean id="userDao" class="dao.UserDaoImpl">
    <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>

<!-- 配置mapper,逐个表编写
    MapperFactoryBean:用于生成mapper代理对象
 -->
 <!--<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">-->
    <!--<property name="mapperInterface" value="mapper.UserMapper"/>-->
    <!--<property name="sqlSessionFactory" ref="sqlSessionFactory"/>-->
<!--</bean>-->

<!--
MapperScannerConfigurer:mapper的扫描器,将包下边的mapper接口自动创建代理对象,自动创建到spring容器中,bean的id是mapper的类名(首字母小写)
 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!-- 配置扫描包的路径
    如果要扫描多个包,中间使用半角逗号分隔
     -->
    <property name="basePackage" value="mapper"/>
    <!-- 使用sqlSessionFactoryBeanName -->
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    
</bean>
</beans>

测试(以测试dao为例)

package test.dao;

import dao.UserDao;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
mport org.springframework.context.support.ClassPathXmlApplicationContext;
import po.User;

public class UserDaoImplTest {

private ApplicationContext applicationContext;

@Before
public void setUp(){
    //创建spring 容器
    applicationContext = new ClassPathXmlApplicationContext("config/spring/applicationContext.xml");
}
@Test
public void testFindUserById(){
    //从spring容器中获取UserDao这个bean
    UserDao userDao = (UserDao) applicationContext.getBean("userDao");
    User userById = userDao.findUserById(1);
   System.out.println(userById);applicationContext.getBean("userById");

 //测试mapper
   UserMapper userMapper = (UserMapper) 
    User userById = userMapper.findUserById(1);
  }
}

原始dao整合

  • 使用SqlsessionTemplate或SqlSessionDaoSupport类在DAO实现类中注入SqlSessionFactory来创建SqlSession。
  • 开发dao(编写UserDao 、UserDaoImpl)
  • 配置dao (在applicationContext.xml配置)
  • 接口测试


    UserDao
UserDaoImpl dao配置
dao整合的目录结构图

整合mapper

  • 基于MapperFactoryBean整合
  • 基于MapperScannerConfigurer整合
  • 编写配置文件
  • 编写Usermapper.java Usermapper.xml


    mapper整合的目录结构图

相关文章

网友评论

  • 你还没熟:大佬 想请问下 SqlSessionFactory使用这个需要导入jar包么?
    你还没熟:@幻影翔 找到了找到了 谢谢大佬 要不还得卡好久
    幻影翔:@spleated 是的,他需要导入mybatis的jar包
  • IT人故事会:贵在坚持,么么哒!
    幻影翔:@IT人故事会 坚持,老兄也是在搞java吗?

本文标题:mybatis和spring整合

本文链接:https://www.haomeiwen.com/subject/voygjftx.html