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整合详解与实战指南》 在Java开发领域,MyBatis和Spring是两个非常重要的框架,它们各自在持久层和依赖注入方面表现出色。MyBatis-Spring作为一个桥梁,将这两个优秀框架无缝集成,使得开发更加...
本资源包含Mybatis的学习视频、教程以及源码,非常适合初学者和进阶者进行深入研究。 首先,Mybatis的学习视频将覆盖从基础到高级的各个主题,如Mybatis的安装配置、XML配置文件的理解、动态SQL的运用、Mapper接口...
1. **整合思路**:Spring整合MyBatis的目标是通过Spring的单例模式管理SqlSessionFactory,由Spring创建SqlSession的代理对象,使得持久层的Mapper接口可以直接由Spring管理,从而简化数据库访问的实现。 2. **环境...
压缩包中的"lesson7(1-9)"文件可能包含了从基础到进阶的9个步骤,涵盖了Spring与MyBatis整合的全过程。例如,可能包含以下内容: - 第1步:环境搭建,包括导入Spring、MyBatis和MySQL的相关库。 - 第2步:配置...
在整合MyBatis时,Spring可以负责SqlSessionFactory和SqlSessionTemplate的创建和管理,使得数据库操作更加集中和规范。 2. **事务管理(Transaction Management)**:Spring提供了声明式事务管理,只需在配置文件...
9. **Mybatis与Spring的整合**:介绍如何在Spring环境中集成Mybatis,使用Spring的依赖注入来管理SqlSessionFactory和Mapper实例。 10. **自定义插件**:Mybatis支持插件机制,可以对Executor、StatementHandler、...
3. **SSM整合**:Spring与Mybatis的整合,通常通过Spring的SqlSessionFactoryBean和Mybatis的Mapper接口来实现。Spring会管理Mybatis的SqlSession,提供事务控制,并通过MapperScannerConfigurer扫描包下的Mapper...
7. **Spring与MyBatis集成**:如果之前已经接触过Spring框架,那么这一天可能会讲解如何将MyBatis整合到Spring应用中,利用Spring的依赖注入和AOP特性增强MyBatis的功能。 8. **MyBatis的高级用法**:可能包括延迟...
5. **MyBatis与Spring的整合**:介绍如何在Spring框架中配置MyBatis,以及如何使用Spring的@Autowired和@Scope注解。 6. **MyBatis的延迟加载(Lazy Loading)**:说明何时启用延迟加载,以及如何处理懒加载引起的N...
最后,Mybatis与Spring的整合也是学习路线中的一环。了解如何将Mybatis整合到Spring框架中,可以进一步提升项目的整体架构和开发效率。这涉及到Spring的配置、事务管理等高级特性,是进阶学习者需要掌握的内容。 ...
9. **事务管理**:解释MyBatis如何与Spring整合进行事务控制,以及手动事务的使用。 10. **性能优化**:分析如何通过合理配置提高MyBatis的执行效率,如批处理、延迟加载等。 第四天可能涉及更进阶的话题: 11. **...
初学者可以通过这个简单的框架开始了解如何整合这两个框架,逐步学习如何编写Mapper接口、XML映射文件,以及如何在Spring中配置和使用它们。 总的来说,这个项目实例是学习Spring和MyBatis集成的一个起点,适合对...
1. **MyBatis学习笔记课件**:这些课件提供了MyBatis的基础知识和进阶概念,包括MyBatis的安装、配置、Mapper接口的创建、XML映射文件的编写、动态SQL以及事务管理等内容。通过学习,你可以理解MyBatis的核心机制,...
在实际项目中,还可能涉及Spring Security进行权限控制、Spring AOP进行日志记录和事务管理等进阶话题。但基础的整合流程以上述步骤为主,掌握这些基本知识后,开发者就能开始构建自己的SpringMVC+MyBatis应用了。
Spring MVC、MyBatis 和 MySQL 是构建现代 Web 应用程序的三大核心技术,它们共同构成了一个强大而灵活的后端架构...此外,还可以学习到 MVC 设计模式、依赖注入、事务管理等核心概念,为后续的进阶学习打下坚实基础。
《Spring Boot整合MyBatis与MySQL的深度解析》 在当今的Java开发领域,Spring Boot以其简洁、快速的特性受到了广大开发者的喜爱。与此同时,MyBatis作为一款轻量级的持久层框架,以其灵活易用的特点在数据访问层面...
Spring MyBatis 开发案例源码是一个非常适合初学者和进阶者深入理解并实践Spring与MyBatis集成的资源。这个案例涵盖了从基础到高级的各种应用场景,帮助开发者逐步掌握这两个流行框架的协同工作。 首先,Spring是一...
SSM(Spring + Spring MVC + MyBatis)框架作为Java开发中的黄金组合,为开发者提供了强大的技术支持和丰富的功能。本系列资料将带您从零基础开始,逐步掌握SSM的核心技术和最佳实践,助您在Java Web开发领域更上一...
此外,还会涉及到MyBatis的缓存机制、插件扩展、Spring与MyBatis的整合等进阶内容。对于初学者,理解MyBatis的核心思想和基本用法是首要任务,随着经验的积累,可以深入研究其内部原理和高级特性。
n Spring + Mybatis + MP 整合 n SpringBoot + Mybatis + MP 整合 n 通用CRUD的全面讲解 n 配置 l 高级用法 n 条件构造器 n Oracle 主键Sequence n 通用枚举n ActiveRecord n 逻辑删除 l 插件 n 执行分析插件 n 性能...