文档章节

springmvc - SqlSessionFactoryBean

lemos
 lemos
发布于 2016/11/18 09:49
字数 521
阅读 60
收藏 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
粉丝 8
博文 184
码字总数 92482
作品 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-spring:mybatis在spring中的使用

当我们想在 spring 项目中使用 mybatis 的时候就需要 mybatis-spring 了,它可以让 spring 完美的整合 mybatis 代码。使用这个类库中的类,spring 将会加载必要的 mybatis 工厂类和 session ...

非摩尔根
01/08
0
0
Mybatis-spring 1.2.3 发布

MyBatis-Spring 是一个用来整合 MyBatis 和 Spring 框架的小类库。 Mybatis-spring 1.2.3 发布,此版本是个 bug 修复版本,更新内容: Custom FactoryBean on MapperScan annotation added,...

oschina
2015/06/19
10.3K
2
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
MyBatis-Spring 1.2.4 正式发布

MyBatis-Spring 1.2.4 正式发布了,改进内容包括: Add vfsImpl property in SqlSessionFactoryBean SqlSessionTemplate bean is not valid for disposal by Spring container added possib......

淡漠悠然
2016/02/14
4.5K
6

没有更多内容

加载失败,请刷新页面

加载更多

Hive性能优化

Hive设置参数的三种方法 Hive提供三种可以改变环境变量的方法,分别是:(1)、修改${HIVE_HOME}/conf/hive-site.xml配置文件;(2)、命令行参数;(3)、在已经进入cli时进行参数声明。下面...

hblt-j
6分钟前
0
0
快速使用github发布axure原型

前言 axure生成的原型图可以在自带的Axure share上使用,公司内网也可以直接放在本地访问,也可以打包成html文档给研发同事访问。这里我只是想将我的作品传到github上,并使其他人可以远程访...

铸剑为犁413
8分钟前
0
0
零基础学算法->质数

质数的定义 质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数) 大于1的自然数若不是素数,则...

tedzheng
18分钟前
0
0
C++程序中可以没有using namespace std;这一句吗

可以啊、、只是命名空间的声明而已。意思就是说下面的函数,如果有和stl库里面一个名字的,就是用的stl的函数 C++ using namespace std 详解  所谓namespace,是指标识符的各种可见范围。C...

天王盖地虎626
19分钟前
0
0
string类回顾

writeademo
23分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部