SprignMVC+myBatis整合(一)—— 基于MapperFactoryBean
来源:互联网 发布:c语言do-while的用法 编辑:程序博客网 时间:2024/06/11 11:04
学习本节内容请先看"MyBatis的基本应用"。地址:http://lydia-fly.iteye.com/admin/blogs/2152948
Spring与MyBatis整合需要引入mybatis-spring.jar文件包。
其提供了与整合相关的API:
SqlSessionFactoryBean
--为整合应用提供SqlSession对象资源
MapperFactoryBean
--根据指定的Mapper接口生成Bean实例
MapperScannerConfigurer
--根据指定包批量扫描Mapper接口并生成实例
SqlSessionFactoryBean:
在单独使用MyBatis时,所有操作都是围绕SqlSession展开的,SqlSession是通过SqlSessionFactory获取的,SqlSessionFactory又是通过SqlSessionFactoryBuilder创建生成的。
在SpringMvc+MyBatis整合时,同样需要SqlSession。SqlSessionFactoryBean这个组件通过原来的SqlSessionFactoryBuilder生成SqlSessionFactory对象,为整合应用提供SqlSession对象。
- <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName" value="oracle.jdbc.OracleDriver" />
- <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
- <property name="username" value="jsd1403" />
- <property name="password" value="root" />
- </bean>
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="myDataSource" />
- <property name="mapperLocations" value="classpath:com/lydia/entity/*.xml" />
- </bean>
MapperFactoryBean:
其作用是根据Mapper接口获取我们想要的Mapper对象,它封装了原有的session.getMapper()功能的实现。
在定义MapperFactoryBean时,需要注入一下两个属性:
--SqlSessionFactoryBean对象,用于提供SqlSession
--要返回Mapper对象的Mapper接口
MapperFactoryBean配置如下:
- <!-- 方法一:定义mapper -->
- <bean id="deptMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
- <property name="mapperInterface" value="com.lydia.entity.DeptMapper"></property>
- <!-- 指定SqlSessionFactoryBean对象 -->
- <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
- </bean>
MapperScannerConfigurer配置使用:
注意:使用MapperFactoryBean时,当有一个Mapper(可以理解为表对应的映射文件)就MapperFactoryBean,当mapper少数可以通过applicationContext配置文件,通过id获取。
如果大量的mapper,需要使用mybatis-spring.jar通过的MapperScannerConfigurer组件,通过这个组件可以自动扫描指定包下的各个Mapper接口,并注册对应的MapperFactoryBean对象。
把之前的MapperFactoryBean的配置注释掉,换成如下配置依然执行通过:
- <!--方法2:
- 可以把扫描到的Mapper接口变成Mapper对象-->
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <!--指定要扫描包: 多个包用逗号隔开 -->
- <property name="basePackage" value="com.lydia,com.tarena" />
- <!--指定sqlSessionFactory -->
- <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
- </bean>
注意:上面sqlSessionFactory属性也可以不用指定,默认会以Autowired方式注入。
如果指定的某个包下并不完全是我们定义的Mapper接口,我们也可以通过自定义注解的方式指定生成MapperFactoryBean对象。
配置如下:
- <!--方法3:
- 只要Mapper类前面加上@MyBatisRepository 这个自己指定的注解就OK-->
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.lydia" />
- <property name="annotationClass" value="com.lydia.annotation.MyBatisRepository" />
- </bean>
自定义注解:MyBatisRepository.java
- public @interface MyBatisRepository {
- }
在DeptMapper接口中使用:
- //@Repository("deptMapper")
- @MyBatisRepository
- public interface DeptMapper {
- void addDept(Dept dept);
- void deleteDept(Dept dept);
- void updateDept(Dept dept);
- ......
- }
测试:
- public class TestCase {
- @Test
- public void testFindAll() throws Exception {
- String conf = "applicationContext.xml";
- ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
- //获取对应的mapper对象,并调用mapper接口中对应的方法
- DeptMapper mapper = ac.getBean("deptMapper", DeptMapper.class);
- List<Dept> lists = mapper.findAllDept();
- for (Dept dept : lists) {
- System.out.println(dept);
- }
- }
- }
- SprignMVC+myBatis整合(一)—— 基于MapperFactoryBean
- SprignMVC+myBatis整合(一)—— 基于MapperFactoryBean
- spring整合mybatis(基于MapperFactoryBean)
- spring-mybatis整合一MapperFactoryBean
- spring整合mybatis(不基于MapperFactoryBean)
- spring-mybatis —— MapperFactoryBean之数据映射文件
- spring-mybatis——MapperFactoryBean 之映射接口
- mybatis与spring3.1整合(org.mybatis.spring.mapper.MapperFactoryBean)
- mybatis与spring3.1整合(org.mybatis.spring.mapper.MapperFactoryBean)
- Spring/mybatis整合之MapperScannerConfigurer和MapperFactoryBean区别
- Spring-MyBatis 之 MapperFactoryBean
- spring mybatis 之MapperFactoryBean
- SprignMVC+myBatis整合+mybatis源码分析+动态代理实现流程+如何根据mapper接口生成其实现类
- Spring+MyBatis整合使用MapperFactoryBean注入映射器(简化配置)
- mybatis之MapperFactoryBean源码解读
- MyBatis学习总结(七)——基于Maven的Mybatis和Spring整合 实战
- Spring整合Mybatis(一)
- Mybatis-Spring 的高级配置(MapperFactoryBean)
- li浮动布局,两行两列,其中有合并效果
- 16. 3Sum Closest
- Android Studio上面使用Ndk JNI 开发工程
- 数据挖掘知识梳理脑图
- python的numpy和matplotlib包的安装
- SprignMVC+myBatis整合(一)—— 基于MapperFactoryBean
- 学生成绩管理代码(c代码)
- [poj 2948] Martian Mining 棋盘型DP
- python strip()函数
- hdu 4717 The Moving Points
- nosql数据库不提供事务
- 14、迭代器模式(Iterator)
- MyBatis
- 字节、字、bit、byte的关系