之前一直使用mybatis+mybatis-spring-1.1.1,系统升级mybatis后使用mybatis-spring-1.2.0,
再其它配置均为修改的情况下运行出错:
Property 'sqlSessionFactory' or'sqlSessionTemplate' are required
从SqlSessionDaoSupport 这个类的源码中可以看出,原因是mybatis-spring-1.2.0
中取消了自动注入 SqlSessionFactory 和SqlSessionTemplate
/** * Convenient super class for MyBatis SqlSession data access objects. * It gives you access to the template which can then be used to execute SQL methods. * <p> * This class needs a SqlSessionTemplate or a SqlSessionFactory. * If both are set the SqlSessionFactory will be ignored. * <p> * {code Autowired} was removed from setSqlSessionTemplate and setSqlSessionFactory * in version 1.2.0. * * @see #setSqlSessionFactory * @see #setSqlSessionTemplate * @see SqlSessionTemplate * @version $Id$ */ public abstract class SqlSessionDaoSupport extends DaoSupport { private SqlSession sqlSession; private boolean externalSqlSession; public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { if (!this.externalSqlSession) { this.sqlSession = new SqlSessionTemplate(sqlSessionFactory); } } public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) { this.sqlSession = sqlSessionTemplate; this.externalSqlSession = true; } …… }
1.1.1中代码片段为:
1 public abstract class SqlSessionDaoSupport extends DaoSupport { 2 3 private SqlSession sqlSession; 4 5 private boolean externalSqlSession; 6 7 @Autowired(required = false) 8 public final void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { 9 if (!this.externalSqlSession) { 10 this.sqlSession = new SqlSessionTemplate(sqlSessionFactory); 11 } 12 } 13 14 @Autowired(required = false) 15 public final void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) { 16 this.sqlSession = sqlSessionTemplate; 17 this.externalSqlSession = true; 18 } 19 …… 20 21 }
可能是为了解决多数据源的问题吧,取消了自动注入。没用到多数据源,不太关心这个。
解决方案:因为我们dao层是继承于一个dao基类,所以只要在这个基类中注入任意一个属性即可。 SqlSessionFactory 在spring配置文件中已经配置。
1 public class CommonDao extends SqlSessionDaoSupport { 2 @Resource 3 public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory){ 4 super.setSqlSessionFactory(sqlSessionFactory); 5 }
相关推荐
在整合的配置中很多地方都是可以注入 SqlSessionTemplate 代替 SqlSessionFactory 的注入的。 二、实现代码 1、继承 SqlSessionTemplate 重写 getSqlSessionFactory、getConfiguration 和 SqlSessionInterceptor ...
SpringBoot 整合 MyBatis。解决因Mybatis-Spring版本过高引起的“Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required”异常
`MapperScannerConfigurer`支持多种方式注入`SqlSessionFactory`,包括`sqlSessionFactory`、`sqlSessionFactoryBeanName`、`sqlSessionTemplate`和`sqlSessionTemplateBeanName`。然而,`sqlSessionFactory`这种...
spring+mybatis dao层使用动态代理实现org.mybatis.spring.mapper.MapperScannerConfigurer类设置属性指定dao接口以及sqlSessionFactory 或SqlSessionTemplate
首先,集成Mybatis和Spring的关键在于Spring管理Mybatis的SqlSessionFactory和SqlSessionTemplate。SqlSessionFactory是Mybatis的核心对象,用于创建SqlSession,而SqlSessionTemplate则是Spring对SqlSession的封装...
1. **自动扫描Mapper接口**:它能够自动扫描指定包下的Mapper接口,并将这些接口与MyBatis的SqlSessionFactory或SqlSessionTemplate进行绑定,无需在Spring配置文件中手动配置每个Mapper。 2. **事务管理**:...
整合的核心在于将iBatis的SqlSessionFactory和SqlSessionTemplate作为Spring的Bean管理起来,以便在Controller中可以依赖注入并使用。 1. **配置数据库连接**:在Spring的配置文件(如`applicationContext.xml`)中...
在Spring和MyBatis的整合过程中,我们通常会利用Spring的IoC(Inversion of Control,控制反转)特性来管理MyBatis的SqlSessionFactory和SqlSessionTemplate,以及配置MyBatis的Mapper接口和Mapper XML文件,以便...
4. **SqlSessionFactory和SqlSessionTemplate**:Spring提供了一个SqlSessionFactoryBean,用于创建SqlSessionFactory对象,它是MyBatis的主要入口点。SqlSessionTemplate则是Spring提供的一个线程安全的SqlSession...
接下来,配置Spring的Bean定义,包括数据源、SqlSessionFactory和SqlSessionTemplate。在`applicationContext.xml`或通过Java配置类设置这些组件。 ```xml <property name="driverClassName" value=...
通过这个包,我们可以将 MyBatis 的 SqlSessionFactory 和 SqlSessionTemplate 配置为 Spring 的 Bean,进而实现依赖注入。同时,`mybatis-spring-1.0.0-RC2-sources.jar` 提供了源代码,便于开发者理解和定制。 在...
在IT行业中,尤其是在Java开发领域,`testweb20200123第一个sqlSessionFactory.zip`这个压缩包文件的标题和描述暗示了一个基于Java的Web应用项目,它使用了MVC(Model-View-Controller)架构模式,并且集成了Spring ...
这个库提供了Spring与MyBatis之间的桥梁,使得MyBatis的SqlSessionFactory和SqlSessionTemplate可以被Spring管理。 - **创建SqlSessionFactoryBean** 在Spring的配置文件中,我们需要定义一个`...
通过这个库,我们可以将MyBatis的SqlSessionFactory或SqlSessionTemplate直接注入到Spring管理的Bean中,简化了事务管理和DAO的创建过程,提高了代码的可读性和可维护性。 二、MyBatis-Spring的核心组件 1. ...
1. **依赖注入**:Spring通过@Autowired注解可以自动将MyBatis的SqlSessionFactory或者SqlSessionTemplate注入到我们的Service层,这样我们就可以在Service层直接使用MyBatis进行数据库操作,无需手动创建SqlSession...
通过以上步骤,我们就完成了Spring与iBatis的集成配置,包括了数据源、SqlSessionFactory、SqlSessionTemplate、Mapper接口的扫描以及事务管理。这样,我们就可以在Spring的管理下,利用iBatis进行高效、灵活的数据...
MyBatis-Spring 是 MyBatis 与 Spring 框架的桥梁,它通过提供 Spring Bean 容器对 MyBatis SqlSessionFactory 和 SqlSessionTemplate 的管理,使得事务控制、依赖注入等 Spring 功能能够轻松应用到 MyBatis 中。...
1. **Bean配置**:需要在Spring配置文件中定义SqlSessionFactory和SqlSessionTemplate,或者使用MapperFactoryBean来加载MyBatis的Mapper接口。 2. **事务管理**:Spring可以控制MyBatis的事务,通过...
这包括数据源、SqlSessionFactory和SqlSessionTemplate。数据源是连接数据库的关键,SqlSessionFactory是MyBatis的核心对象,用于创建SqlSession。SqlSessionTemplate是Spring对SqlSession的封装,提供了线程安全的...
这个库提供了Spring和MyBatis之间的桥梁,使得Spring可以管理SqlSessionFactory和SqlSessionTemplate。 2. **创建SqlSessionFactoryBean**:在Spring的配置文件中,定义一个SqlSessionFactoryBean,它会根据配置...