文档章节

springmvc - SqlSessionFactoryBean

lemos
 lemos
发布于 2016/11/18 09:49
字数 521
阅读 59
收藏 1

一、SqlSessionFactoryBean

mybatis-spring 官网

在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建。而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来替代:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
</bean>

注意:

实际上在Spring中,SqlSessionFactoryBean 并不是真正的session工厂,这其中经历了

SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
SqlSessionFactory sessionFactory = factoryBean.getObject();

这样的py交易。最后产生的sessionFactory 对象将以SqlSessionFactory为名存储。

至于,在一般的 MyBatis-Spring用法中,session工厂将会被注入到 MapperFactoryBean或其它扩展了SqlSessionDaoSupport DAO中。

二、属性

  • 必须属性
    SqlSessionFactory 有一个单独的必须属性,就是 JDBC 的 DataSource
  • 通用属性
    configLocation,它是用来指定 MyBatis 的 XML 配置文件路径的。Mybatis 配置文件中通常刨包括 <settings> 或<typeAliases>的部分。
  • 建议属性
    当MyBatis 映射器 XML 文件在和映射器类不在同一路径下,有两种解决方法。第一是手动在 MyBatis 的 XML 配 置文件中使用<mappers>部分来指定类路径。第二是使用工厂 bean 的 mapperLocations 属 性。
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"/>
    <!-- 自动扫描mapper.xml文件 -->
    <!-- 不要使用第一种方式,这是错误的。-->
    <!--<property name="mapperLocations" value="classpath*:club.lemos.ssm.mapper/*.xml"></property>-->
    <property name="mapperLocations" value="classpath*:club/lemos/ssm/mapper/*.xml"></property>
</bean>

mapperLocations 的值可以包含 Ant 样式来加载一个目录中所有文件, 或者从基路径下 递归搜索所有路径。

  • 其它属性
    • 在容器环境管理事务中,一个可能需要的属性是 transactionFactoryClass
    • 从1.3.0版本, 增加了configuration 属性.它能够在没有mybatisConfig.xml文件的情况下,对其属性进行配置。
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="configuration">
    <bean class="org.apache.ibatis.session.Configuration">
      <property name="mapUnderscoreToCamelCase" value="true"/>
    </bean>
  </property>
</bean>

 

注意:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath*:com/taotao/mapping/*.xml"/>
    <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"/>
</bean>

这个地方一定要加classpath:虽然不加可能也能访问到。但是对于某些开发情况下还是会报错。不要使用classpath*,

因为classpath* 是在不同jar包中查找多个文件。比如*.xml。

本文转载自:http://blog.csdn.net/qq_34232804/article/details/53142407

共有 人打赏支持
lemos
粉丝 6
博文 179
码字总数 91193
作品 0
芜湖
后端工程师
私信 提问
spring中的mybatis(1)

开门见山 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations" value="cl......

hyssop
2015/10/29
0
0
mybatis入门教程(八)------mybatis与spring集成

Mybatis与Spring集成开发 前期准备 mybatis与Spring集成,那么就需要spring对应的jar包 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><vers......

残风vs逝梦
2014/06/10
0
1
Springboot 中 Mybatis 的使用

官方文档: Mybatis开发团队为Spring Boot 提供了 MyBatis-Spring-Boot-Starter 方便使用。 要使用MyBatis-Spring-Boot-Starter模块,只需要在类路径中包含 mybatis-spring-boot-autoconfig...

不开心时不要学习
01/19
0
0
精通Spring Boot——第十三篇:整合Mybatis多数据源

久违了,最近度过了一段倦怠期,这段时间干什么都没有动力,拖延症复发。好在我回来了.... ——From me .进入今天的主题——在Spring Boot 项目中整合mybatis多数据源,其实很简单,其实并不...

developlee的潇洒人生
今天
0
0
一步一步搭建springboot+mybatis+jta框架

项目目录一览图: 1. 导入项目需要的jar包,如下: 2. 配置数据源属性文件(这里配置两个,分别为car,test) car数据源配置 spring.datasource.car.type=com.alibaba.druid.pool.DruidDataSources...

liuchangng
2017/09/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ViewPager+Fragment+FragmentPagerAdapter实现软件主界面

ViewPager之前的页面是由View构成的,现在由Fragment构成,之前的PagerAdapter这里也换成了FragmentPagerAdapter.因为PagerAdapter有 public Object instantiateItem(ViewGroup container, i......

鱼想吃肉
17分钟前
0
0
feign文件上传遇到的坑

明天写

王俊博客
22分钟前
0
0
scala的sorted,sortBy,sortWith

val lst = List(1,3,2,4,5) //scala中对于集合的排序有三种方法:sorted,sortBy,sortWith //sorted方法对一个集合进行自然排序,传递一个Ordering隐式参数 def sorted[B >: A](imp...

whoisliang
37分钟前
0
0
区块链扩容最佳途径?十分钟讲清楚侧链技术

今天我们来讲区块链扩容的另一个主流方案——侧链,侧链可作为解决区块链扩容难题的一种有效解决方案。有些人认为,从理论上说,这种解决方案可让所有人都满意。 基础概念 侧链协议本质上是一...

HiBlock
39分钟前
0
0
3年经验Java程序员面阿里P6 差距在哪里

虽然这位小伙伴觉得自己工作三年了,结果阿里连面都不面就把自己挂了,这让自己感到很伤心。但是还是有网友觉得,三年不到p6,很正常啊,明年再面就没有问题啦! Java程序员3年经验面阿里P6,...

架构师springboot
41分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部