mybatis SqlSessionFactoryBean SqlSessionTemplate MapperScannerConfigurer
来源:互联网 发布:网络监控系统 编辑:程序博客网 时间:2024/05/16 05:15
mybatis SqlSessionFactoryBean SqlSessionTemplate MapperScannerConfigurer
SqlSessionFactoryBuilder:build方法创建SqlSessionFactory实例。
SqlSessionFactory:创建SqlSession实例的工厂。
SqlSession:用于执行持久化操作的对象,类似于jdbc中的Connection。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:****:*****:1521:****" /> <property name="username" value="****" /> <property name="password" value="****" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation"> <value>classpath:mybatis/mapper.xml</value> </property> <property name="dataSource" ref="dataSource" /> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <!-- 注解Mapper scanner --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.**.ext" /> <property name="sqlSessionTemplateBeanName" value="sqlSession" /> </bean>
1)SqlSessionFactoryBean
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation"> <value>classpath:mybatis/mapper.xml</value> </property> <property name="dataSource" ref="dataSource" /> </bean>
SqlSessionFactoryBean 实现了 Spring 的 FactoryBean 接口,就说明了由 Spring 最终创建的 bean 不是 SqlSessionFactoryBean 本身, 。 而是工厂类的 getObject()返回的方法的结果。这种情况下,Spring 将会在应用启动时为你 创建 SqlSessionFactory 对象,然后将它以 SqlSessionFactory 为名来存储,这相当于下面的代码:
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();SqlSessionFactory sessionFactory = factoryBean.getObject();1.SqlSessionFactoryBean 属性
要注意这个配置文件不需要是一个完整的 MyBatis 配置。确切地说,任意环境,数据源 和 MyBatis 的事务管理器都会被忽略。SqlSessionFactoryBean 会创建它自己的,使用这些 值定制 MyBatis 的 Environment 时是需要的。
如果 MyBatis 映射器 XML 文件在和映射器类相同的路径下不存在,那么另外一个需要 配置文件的原因就是它了。使用这个配置,有两种选择。第一是手动在 MyBatis 的 XML 配 置文件中使用<mappers>部分来指定类路径。第二是使用工厂 bean 的 mapperLocations 属 性。
3)mapperLocations 属性使用一个资源位置的 list。 这个属性可以用来指定 MyBatis 的 XML 映射器文件的位置。 它的值可以包含 Ant 样式来加载一个目录中所有文件, 或者从基路径下 递归搜索所有路径。比如:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath*:sample/config/mappers/**/*.xml" /></bean>
这会从类路径下加载在 sample.config.mappers 包和它的子包中所有的 MyBatis 映射器 XML 文件。
2)SqlSessionTemplate
MyBatis提供的持久层访问模板化的工具,线程安全,可通过构造参数或依赖注入SqlSessionFactory实例
SqlSessionTemplate是MyBatis-Spring的核心。这个类负责管理MyBatis的SqlSession,调用MyBatis的SQL方法,翻译异常。SqlSessionTemplate是线程安全的,可以被多个DAO所共享使用。当调用SQL方法时,包含从映射器getMapper()方法返回的方法,SqlSessionTemplate将会保证使用的SqlSession是和当前Spring的事务相关的。此外,它管理session的生命周期,包含必要的关闭,提交或回滚操作。
SqlSessionTemplate实现了SqlSession,这就是说要对MyBatis的SqlSession进行简易替换。
SqlSessionTemplate通常是被用来替代默认的MyBatis实现的DefaultSqlSession,因为它不能参与到Spring的事务中也不能被注入,因为它是线程不安全的。相同应用程序中两个类之间的转换可能会引起数据一致性的问题。
<span style="font-size:14px;"><!--创建jdbc数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:****:*****:1521:****" /> <property name="username" value="****" /> <property name="password" value="****" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:com/Template/configuration.xml" /> </bean> <strong> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <bean id="customerTest" class="com.Template.Test"> <property name="sqlSession" ref="sqlSession" /> </bean></span> </strong>这是测试类,由于这是SqlSessionTemplate,所以不需要继承
<span style="font-size:14px;">import javax.annotation.Resource; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test{ @Resource <strong>public SqlSessionTemplate sqlSession; </strong> public static void main(String[] args) { // TODO Auto-generated method stub new Test().firstTest(); } public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } public void firstTest() { BeanFactory factory = new ClassPathXmlApplicationContext("com/Template/applicationContext.xml"); <strong> Test test = (Test)factory.getBean("customerTest"); Customer cus = (Customer)test.sqlSession.selectOne("selectCustomer",10696); </strong> System.out.println(cus); } }</span>3)MapperScannerConfigurer
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <propery name="basePackage" value="org.mybatis.spring.sample.mapper"/> </bean>
basePackage属性是让你为映射器接口文件设置基本的包路径。你可以使用分号或逗号作为分隔符设置多于一个的包路径。每个映射器将会在指定的包路径中递归地被搜索到。
注意,没有必要去指定SqlSessionFactory或SqlSessionTemplate,因为MapperScannerConfigurer将会创建MapperFactoryBean,之后自动装配。但是,如果你使用了一个以上的DataSource(因此,也是多个的SqlSessionFactory),那么自动装配可能会失效。这种情况下,你可以使用sqlSessionFactory或sqlSessionTemplate属性来设置正确的工厂/模板。
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <!-- 注解Mapper scanner --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.**.ext" /> <strong> <property name="sqlSessionTemplateBeanName" value="sqlSession" /></strong> </bean>
- mybatis SqlSessionFactoryBean SqlSessionTemplate MapperScannerConfigurer
- SqlSessionTemplate MapperScannerConfigurer
- mybatis-spring:MapperScannerConfigurer、MapperScannerConfigurer
- MyBatis-Spring-SqlSessionFactoryBean
- MyBatis-Spring-SqlSessionFactoryBean
- MyBatis-Spring-SqlSessionFactoryBean
- MyBatis-Spring-SqlSessionFactoryBean
- MyBatis+Spring-SqlSessionFactoryBean
- MyBatis-Spring-SqlSessionFactoryBean
- spring-mybatis 之SqlSessionFactoryBean
- spring-mybatis 之SqlSessionFactoryBean
- Spring-MyBatis 之 SqlSessionFactoryBean
- spring mybatis之sqlSessionFactoryBean
- Mybatis SqlSessionTemplate 源码解析
- mybatis 中的SqlSessionTemplate 理解
- spring-mybatis整合-SqlSessionTemplate
- Mybatis SqlSessionTemplate 源码解析
- Mybatis SqlSessionTemplate 源码解析
- 百度地图最新版本sdk使用系列(四)-开启卫星地图,实时交通图,实现标注覆盖物等功能
- 乐恩斯在线英语免费送课啦~外教一对一
- jquery--实现数字的自动累加
- 数据结构:二叉树的链式存储实现
- 详解YUV420数据格式
- mybatis SqlSessionFactoryBean SqlSessionTemplate MapperScannerConfigurer
- Python数值类型学习
- 五、创建循环事件
- mysql重要
- Spring CornExpression
- C++ traits编程技法(一)
- js 文档
- 【转】HTML5浏览器嵌入窗口程序解决方案
- ZigZag Conversion