`

mybatis学习(四)Spring整合mybatis进阶

阅读更多

        mybatis框架中有个很核心的对象SqlSession,那么Spring整合mybatis时我们如何来获取使用SqlSession对象?mybatis-spring官网提供了SqlSessionTemplate和SqlSessionDaoSupport两种使用方式。下面将分别简单介绍这两种方式的使用。

        Spring一种更加灵活的方式来整合mybatis,通过Mapper.xml映射文件要比注解来做SQL映射配置更加具有灵活性,配置文件的方式也是推荐。下面配置SqlSessionFactory

 <!-- 配置mybatis SqlSessionFactory  -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  		<property name="dataSource" ref="dataSource" />
  		<!-- 配置mybatis主配置   settings 和  typeAliases  -->
  		<property name="configLocation" value="classpath:conf/mybatis/mybatis_core.xml"></property>
  		<!-- 配置映射文件的路径 -->
  		<property name="mapperLocations" value="classpath*:conf/mybatis/mapper/**/*.xml" />
	</bean>

 Spring整合mybatis之后,mybati.xml主配置文件可以进行简化只要保留<settings>和<typeAliases>两部分。另外需要注意配置SqlSessionFactory的configLocation要使用classpath,而不要使用classpath*,因为后者会报错,笔者文件首先mybatis.xml主配置文件只有一个,不存在多个问题,而且要明确指出路径,不能使用通配符,但是配置mapperLocations是要配置多个映射文件使用了通配符这里要使用classpath*。

 

<bean id="musicDao" class="org.lian.dao.impl.MusicDaoImpl">
         <property name="sqlSession" ref="sqlSession"/>
    </bean>

 

 

         简而言之  configLocation --->classpath     mapperLocations  --->classpath*

        SqlSessionTemplate

        Spring中配置SqlSessionTemplate

<!--配置 sqlSession  -->
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg index="0" ref="sqlSessionFactory" />
		<!-- 如果要使用批处理 可以选择下面配置 通常不用写 -->
		<!-- <constructor-arg index="1" value="BATCH" /> -->
	</bean>
	

        接下来就是如何在Dao层中使用,下面采用通过配置的方式将sqlSession注入到Dao中

<bean id="musicDao" class="org.lian.dao.impl.MusicDaoImpl">
         <property name="sqlSession" ref="sqlSession"/>
    </bean>

       Dao实现类

public class MusicDaoImpl implements MusicDao {

	private SqlSession sqlSession;

	public void setSqlSession(SqlSession sqlSession) {
		this.sqlSession = sqlSession;
	}

	@Override
	public Music selectMusicById(String id) {
		StringBuilder statement = new StringBuilder();
		statement.append(NAMESPACE).append("selectMusic");
		Music music = sqlSession.selectOne(statement.toString(), id);
		return music;
	}

}

          SqlSessionDaoSupport

 

          SqlSessionDaoSupport有个两个属性sqlSessionFactory 和 sqlSessionTemplate 将这两个对象注入到Dao中就可以使用了。这里以注入sqlSessionFactory为例。

          通过配置文件来注入SqlSessionFactory

 <bean id="musicDao2" class="org.lian.dao.impl.MusicDao2Impl">
         <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>

        使用配置文件注入的时候Dao实现类写的特别简单

 public class MusicDao2Impl extends SqlSessionDaoSupport implements MusicDao {

	@Override
	public Music selectMusicById(String id) {
		System.out.println(this.getClass().getName());
		StringBuilder statement = new StringBuilder();
		statement.append(NAMESPACE);
		statement.append("selectMusic");
		Music music = getSqlSession().selectOne(statement.toString(), id);
		return music;
	}
}

         如果要使用Spring注解的方式来注入SqlSessionFactory可以采用下面的一种方式

@Repository("musicDao2")
public class MusicDao2Impl extends SqlSessionDaoSupport implements MusicDao {

	@Autowired
	public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
		super.setSqlSessionFactory(sqlSessionFactory);
	}

	@Override
	public Music selectMusicById(String id) {
		System.out.println(this.getClass().getName());
		StringBuilder statement = new StringBuilder();
		statement.append(NAMESPACE);
		statement.append("selectMusic");
		Music music = getSqlSession().selectOne(statement.toString(), id);
		return music;
	}
}

        sqlSession关闭交给Spring来管理,因此不用再代码中显式进行关闭。

 

 

分享到:
评论

相关推荐

    mybatis-spring-1.1.1-bundle

    《mybatis-spring整合详解与实战指南》 在Java开发领域,MyBatis和Spring是两个非常重要的框架,它们各自在持久层和依赖注入方面表现出色。MyBatis-Spring作为一个桥梁,将这两个优秀框架无缝集成,使得开发更加...

    Mybatis学习视频+教程+源码

    本资源包含Mybatis的学习视频、教程以及源码,非常适合初学者和进阶者进行深入研究。 首先,Mybatis的学习视频将覆盖从基础到高级的各个主题,如Mybatis的安装配置、XML配置文件的理解、动态SQL的运用、Mapper接口...

    完整版 Java开发实训课程系列-MyBatis框架技术 04.MyBatis与Spring整合开发(共21页).pptx

    1. **整合思路**:Spring整合MyBatis的目标是通过Spring的单例模式管理SqlSessionFactory,由Spring创建SqlSession的代理对象,使得持久层的Mapper接口可以直接由Spring管理,从而简化数据库访问的实现。 2. **环境...

    spring+mybatis

    压缩包中的"lesson7(1-9)"文件可能包含了从基础到进阶的9个步骤,涵盖了Spring与MyBatis整合的全过程。例如,可能包含以下内容: - 第1步:环境搭建,包括导入Spring、MyBatis和MySQL的相关库。 - 第2步:配置...

    spring-mybatis-spring-2.0.2.zip

    在整合MyBatis时,Spring可以负责SqlSessionFactory和SqlSessionTemplate的创建和管理,使得数据库操作更加集中和规范。 2. **事务管理(Transaction Management)**:Spring提供了声明式事务管理,只需在配置文件...

    Mybatis学习笔记

    9. **Mybatis与Spring的整合**:介绍如何在Spring环境中集成Mybatis,使用Spring的依赖注入来管理SqlSessionFactory和Mapper实例。 10. **自定义插件**:Mybatis支持插件机制,可以对Executor、StatementHandler、...

    Spring+Mybatis企业应用实战HR项目源代码

    3. **SSM整合**:Spring与Mybatis的整合,通常通过Spring的SqlSessionFactoryBean和Mybatis的Mapper接口来实现。Spring会管理Mybatis的SqlSession,提供事务控制,并通过MapperScannerConfigurer扫描包下的Mapper...

    mybatis第四天.zip

    7. **Spring与MyBatis集成**:如果之前已经接触过Spring框架,那么这一天可能会讲解如何将MyBatis整合到Spring应用中,利用Spring的依赖注入和AOP特性增强MyBatis的功能。 8. **MyBatis的高级用法**:可能包括延迟...

    MyBatis学习笔记.zip

    5. **MyBatis与Spring的整合**:介绍如何在Spring框架中配置MyBatis,以及如何使用Spring的@Autowired和@Scope注解。 6. **MyBatis的延迟加载(Lazy Loading)**:说明何时启用延迟加载,以及如何处理懒加载引起的N...

    Java Mybatis 学习路线.pdf

    最后,Mybatis与Spring的整合也是学习路线中的一环。了解如何将Mybatis整合到Spring框架中,可以进一步提升项目的整体架构和开发效率。这涉及到Spring的配置、事务管理等高级特性,是进阶学习者需要掌握的内容。 ...

    Xuefeng的Mybatis学习代码.rar

    9. **事务管理**:解释MyBatis如何与Spring整合进行事务控制,以及手动事务的使用。 10. **性能优化**:分析如何通过合理配置提高MyBatis的执行效率,如批处理、延迟加载等。 第四天可能涉及更进阶的话题: 11. **...

    spring+mybatis项目简单例子

    初学者可以通过这个简单的框架开始了解如何整合这两个框架,逐步学习如何编写Mapper接口、XML映射文件,以及如何在Spring中配置和使用它们。 总的来说,这个项目实例是学习Spring和MyBatis集成的一个起点,适合对...

    MyBatis(学习笔记课件,jar包含源码, Jar包, 中文文档, 以及spring集成jar包

    1. **MyBatis学习笔记课件**:这些课件提供了MyBatis的基础知识和进阶概念,包括MyBatis的安装、配置、Mapper接口的创建、XML映射文件的编写、动态SQL以及事务管理等内容。通过学习,你可以理解MyBatis的核心机制,...

    简单的SpringMVC+mybatis整合

    在实际项目中,还可能涉及Spring Security进行权限控制、Spring AOP进行日志记录和事务管理等进阶话题。但基础的整合流程以上述步骤为主,掌握这些基本知识后,开发者就能开始构建自己的SpringMVC+MyBatis应用了。

    spring mvc + mybatis +mysql

    Spring MVC、MyBatis 和 MySQL 是构建现代 Web 应用程序的三大核心技术,它们共同构成了一个强大而灵活的后端架构...此外,还可以学习到 MVC 设计模式、依赖注入、事务管理等核心概念,为后续的进阶学习打下坚实基础。

    spring-boot-mybatis-mysql.zip

    《Spring Boot整合MyBatis与MySQL的深度解析》 在当今的Java开发领域,Spring Boot以其简洁、快速的特性受到了广大开发者的喜爱。与此同时,MyBatis作为一款轻量级的持久层框架,以其灵活易用的特点在数据访问层面...

    springMybatis开发案例源码

    Spring MyBatis 开发案例源码是一个非常适合初学者和进阶者深入理解并实践Spring与MyBatis集成的资源。这个案例涵盖了从基础到高级的各种应用场景,帮助开发者逐步掌握这两个流行框架的协同工作。 首先,Spring是一...

    springboot整合mybatis(SSM项目整合).zip

    SSM(Spring + Spring MVC + MyBatis)框架作为Java开发中的黄金组合,为开发者提供了强大的技术支持和丰富的功能。本系列资料将带您从零基础开始,逐步掌握SSM的核心技术和最佳实践,助您在Java Web开发领域更上一...

    MyBatis学习记录1

    此外,还会涉及到MyBatis的缓存机制、插件扩展、Spring与MyBatis的整合等进阶内容。对于初学者,理解MyBatis的核心思想和基本用法是首要任务,随着经验的积累,可以深入研究其内部原理和高级特性。

    全面学习Mybatis插件之Mybatis-Plus_Java框架视频教程

    n Spring + Mybatis + MP 整合 n SpringBoot + Mybatis + MP 整合 n 通用CRUD的全面讲解 n 配置 l 高级用法 n 条件构造器 n Oracle 主键Sequence n 通用枚举n ActiveRecord n 逻辑删除 l 插件 n 执行分析插件 n 性能...

Global site tag (gtag.js) - Google Analytics