`

SprignMVC+myBatis整合(一)—— 基于MapperFactoryBean

 
阅读更多

学习本节内容请先看"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);
		}
	}
}

 

分享到:
评论
2 楼 15198965201 2016-05-16  
请问下,
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.admin.dao,com.mobile.dao" />
<property name="annotationClass" value="com.admin.annotation.MyBatisRepository" />
</bean>

这样配为什么不行
1 楼 巴比奇 2015-12-05  
经典整合
推荐一个实例下载:http://blog.sina.com.cn/s/blog_14de83a330102w7vv.html

相关推荐

    Spring+SpringMVC+Mybatis框架整合例子——亲测可用.zip

    SSM框架整合是Java开发中常见的技术栈,包括Spring、SpringMVC和Mybatis三个核心组件。这个压缩包提供了一个已经验证过的整合示例,帮助开发者理解和实践这三大框架的协同工作。 首先,Spring框架是Java企业级应用...

    Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码.zip

    Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...

    maven+springmvc+redis+mybatis整合

    本项目以“maven+springmvc+redis+mybatis整合”为主题,旨在提供一个基于这些技术的集成框架,特别强调了利用Redis作为缓存来提升应用性能。下面将详细阐述这个框架中的各个组成部分以及它们之间的协作。 首先,...

    基于SpringMVC+Spring+MyBatis+Maven项目案例.zip

    基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis...

    springboot+mybatis整合实现注册登录

    在本项目中,"springboot+mybatis整合实现注册登录"是一个典型的Web应用程序开发实例,主要涉及Spring Boot和MyBatis两大技术框架的融合应用。Spring Boot简化了Spring应用程序的初始搭建以及开发过程,而MyBatis则...

    java开发基于springboot+vue+mybatis的学生成绩管理系统源码.zip

    这是一个基于springboot+vue+mybatis的学生成绩管理系统。java开发基于springboot的管理系统源码。这是一个基于springboot+vue+mybatis的学生成绩管理系统。java开发基于springboot的管理系统源码。这是一个基于...

    基于springboot+mybatis的选课管理系统.zip

    基于springboot+mybatis的选课管理系统基于springboot+mybatis的选课管理系统 基于springboot+mybatis的选课管理系统基于springboot+mybatis的选课管理系统 基于springboot+mybatis的选课管理系统基于springboot+...

    基于SpringBoot+MyBatis前后端开发的博客网站项目源码.zip

    1、基于SpringBoot+MyBatis前后端开发的博客网站项目源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料...

    基于springboot+mybatis的校园交友网站

    基于springboot+mybatis的校园交友网站基于springboot+mybatis的校园交友网站基于springboot+mybatis的校园交友网站基于springboot+mybatis的校园交友网站基于springboot+mybatis的校园交友网站基于springboot+...

    基于SpringBoot+Mybatis的演出订票系统.zip

    基于SpringBoot+Mybatis的演出订票系统基于SpringBoot+Mybatis的演出订票系统 基于SpringBoot+Mybatis的演出订票系统基于SpringBoot+Mybatis的演出订票系统 基于SpringBoot+Mybatis的演出订票系统基于SpringBoot+...

    springboot+mybatis+bootstrap整合的简单框架

    本项目"springboot+mybatis+bootstrap整合的简单框架"旨在提供一个快速开发的解决方案,将三个流行的开源技术——Spring Boot、MyBatis和Bootstrap融合在一起,以简化Web应用的构建过程。 Spring Boot是由Pivotal...

    基于SpringBoot+Spring+SpringMvc+Mybatis+Shiro+Redis 开发单点登录管理系统源码

    基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + ...

    基于Springboot+Mybatis+Redis+MySql+MQ的校园医疗管理系统源码+数据库.zip

    基于Springboot+Mybatis+Redis+MySql+MQ的校园医疗管理系统源码+数据库.zip 基于Springboot+Mybatis+Redis+MySql+MQ的校园医疗管理系统源码+数据库.zip 基于Springboot+Mybatis+Redis+MySql+MQ的校园医疗管理系统...

    SpringBoot+mybatis+Oracle整合代码

    在"SpringBoot+mybatis+Oracle整合代码"中,我们可以学习到以下几个关键知识点: 1. **SpringBoot的自动配置**:SpringBoot的核心特性之一就是自动配置,它能根据项目中的依赖自动配置相应的Bean。在整合MyBatis时...

    基于springboot2+mybatis+thymeleaf+layui整合开发的在线心理咨询管理系统

    项目描述 spring boot2开发的...spring boot2+mybatis+thymeleaf+layui http://localhost:8080/ 管理后台登录地址 http://localhost:8080/login admin 123456 springboot开发的系统,直接运行YixinliApplication即可

    spring boot+spring mvc+mybatis+thymeleaf整合开发学生成绩信息管理系统

    项目描述 学生成绩管理系统,有三...spring boot+spring mvc+mybatis+layui+jquery+thymeleaf http://localhost:8080/Sys/loginView 管理员账号 admin admin 老师登录 2020031920 111111 学生账号登录 20200319 111111

    SpringBoot+Mybatis整合完整源码

    通过上述步骤,你可以构建一个基于 Spring Boot 和 Mybatis 的简单但完整的 Web 应用。学习和理解这一整合,不仅有助于提升开发效率,还能让你更好地理解和掌握 Spring Boot 的自动化配置机制以及 Mybatis 的动态 ...

    基于SpringBoot + MyBatis + Layui的后台权限管理系统.zip

    基于SpringBoot + MyBatis + Layui的后台权限管理系统。代码简洁易懂、界面美观大方,内部封装了权限管理系统常用的全部功能,可直接作为快速开发JavaWeb项目的脚手架使用。 基于SpringBoot + MyBatis + Layui的...

    spring+springMvc+mybatis整合工程

    spring+springMvc+mybatis整合后的基础工程,具体整合过程可参考:https://blog.csdn.net/m0_37674755/article/details/89303527

    SpringBoot+Mybatis -plus+Mysql+Vue渲染整合

    SpringBoot+Mybatis -plus+Mysql+Vue渲染整合,需求为,院系和学生之间的多对一关系管理,外键不可删除,添加学生时完整显示学院姓名,成功添加,删除,修改,查询,模糊查询包括下拉框(院系),区间段(学生年龄)...

Global site tag (gtag.js) - Google Analytics