mybatis基于spring的配置
来源:互联网 发布:js 遍历div中的ul li 编辑:程序博客网 时间:2024/05/17 01:02
SprignMVC+myBatis整合—— 基于MapperFactoryBean
博客分类: SpringmyBatis
学习本节内容请先看”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对象。
Java代码 收藏代码
<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配置如下:
Java代码 收藏代码
<!-- 方法一:定义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的配置注释掉,换成如下配置依然执行通过:
Java代码 收藏代码
<!--方法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对象。
配置如下:
Java代码 收藏代码
<!--方法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
Java代码 收藏代码
public @interface MyBatisRepository { }
在DeptMapper接口中使用:
Java代码 收藏代码
//@Repository("deptMapper") @MyBatisRepository public interface DeptMapper { void addDept(Dept dept); void deleteDept(Dept dept); void updateDept(Dept dept); ...... }
测试:
Java代码 收藏代码
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); } } }
- mybatis基于spring的配置
- 基于maven的Spring + Spring MVC + MyBatis 环境配置
- 基于maven的SpringMVC,Spring,MyBatis的全注解配置
- spring+springmvc+mybatis基于注解最简洁的配置
- Mybatis的Spring配置
- 基于spring的mybatis封装
- spring mvc+mybatis+ spring 基于全注解事务配置
- 简洁的spring+mybatis 配置
- spring配置mybatis的sqlsessionfactory
- spring+mybatis的配置用法
- Spring + mybatis 基于注解方式的多数据源动态配置
- java-durid、mybatis、spring 整合基于 AbstractRoutingDataSource 的多数据源读写分离配置
- 基于SSM的秒杀业务学习[1] spring/ mybatis/springmvc整合及配置
- spring mvc+spring+mybatis的配置
- Mybatis+Spring基于接口编程的例子
- 基于注解的mybatis和spring整合
- 基于注解的mybatis和spring整合
- 基于spring创建通用的Mybatis类
- python flask 总结以及一些各种传值问题
- iOS 瀑布流的理解和封装
- OPENJUDGE NOI 6252 带通配符的字符串匹配
- Python模拟简单的Web服务器 &1
- Java——递归检查字符串是否回文
- mybatis基于spring的配置
- 自定义相机
- Hyperledger 项目介绍
- Android反射
- 如何读取同一个文件夹下面的所有图片
- Ubuntu 安装nginx
- Android 电池管理系统
- Python yield 使用浅析
- bootstrap bug fixed