`
zhb8015
  • 浏览: 397195 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
Spring Roo杂谈
浏览量:0
社区版块
存档分类
最新评论

Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

阅读更多

之前一直使用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     }

 

分享到:
评论

相关推荐

    Spring3 整合MyBatis3 配置多数据源动态选择SqlSessionFactory详细教程

    在整合的配置中很多地方都是可以注入 SqlSessionTemplate 代替 SqlSessionFactory 的注入的。 二、实现代码 1、继承 SqlSessionTemplate 重写 getSqlSessionFactory、getConfiguration 和 SqlSessionInterceptor ...

    springboot整合Mybatis

    SpringBoot 整合 MyBatis。解决因Mybatis-Spring版本过高引起的“Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required”异常

    详解 MapperScannerConfigurer之sqlSessionFactory注入方式

    `MapperScannerConfigurer`支持多种方式注入`SqlSessionFactory`,包括`sqlSessionFactory`、`sqlSessionFactoryBeanName`、`sqlSessionTemplate`和`sqlSessionTemplateBeanName`。然而,`sqlSessionFactory`这种...

    dao层动态代理实现demo

    spring+mybatis dao层使用动态代理实现org.mybatis.spring.mapper.MapperScannerConfigurer类设置属性指定dao接口以及sqlSessionFactory 或SqlSessionTemplate

    Mybatsi与spring的简单整合

    首先,集成Mybatis和Spring的关键在于Spring管理Mybatis的SqlSessionFactory和SqlSessionTemplate。SqlSessionFactory是Mybatis的核心对象,用于创建SqlSession,而SqlSessionTemplate则是Spring对SqlSession的封装...

    mybatis-spring 整合包

    1. **自动扫描Mapper接口**:它能够自动扫描指定包下的Mapper接口,并将这些接口与MyBatis的SqlSessionFactory或SqlSessionTemplate进行绑定,无需在Spring配置文件中手动配置每个Mapper。 2. **事务管理**:...

    springMVC整合ibatis 配置详细

    整合的核心在于将iBatis的SqlSessionFactory和SqlSessionTemplate作为Spring的Bean管理起来,以便在Controller中可以依赖注入并使用。 1. **配置数据库连接**:在Spring的配置文件(如`applicationContext.xml`)中...

    spring、mybatis整合

    在Spring和MyBatis的整合过程中,我们通常会利用Spring的IoC(Inversion of Control,控制反转)特性来管理MyBatis的SqlSessionFactory和SqlSessionTemplate,以及配置MyBatis的Mapper接口和Mapper XML文件,以便...

    spring与mybatis整合所用的jar包

    4. **SqlSessionFactory和SqlSessionTemplate**:Spring提供了一个SqlSessionFactoryBean,用于创建SqlSessionFactory对象,它是MyBatis的主要入口点。SqlSessionTemplate则是Spring提供的一个线程安全的SqlSession...

    SpringMyBatis.rar

    接下来,配置Spring的Bean定义,包括数据源、SqlSessionFactory和SqlSessionTemplate。在`applicationContext.xml`或通过Java配置类设置这些组件。 ```xml &lt;property name="driverClassName" value=...

    MyBatis+Spring3整合

    通过这个包,我们可以将 MyBatis 的 SqlSessionFactory 和 SqlSessionTemplate 配置为 Spring 的 Bean,进而实现依赖注入。同时,`mybatis-spring-1.0.0-RC2-sources.jar` 提供了源代码,便于开发者理解和定制。 在...

    testweb20200123第一个sqlSessionFactory.zip

    在IT行业中,尤其是在Java开发领域,`testweb20200123第一个sqlSessionFactory.zip`这个压缩包文件的标题和描述暗示了一个基于Java的Web应用项目,它使用了MVC(Model-View-Controller)架构模式,并且集成了Spring ...

    SSM中spring与mybatis整合

    这个库提供了Spring与MyBatis之间的桥梁,使得MyBatis的SqlSessionFactory和SqlSessionTemplate可以被Spring管理。 - **创建SqlSessionFactoryBean** 在Spring的配置文件中,我们需要定义一个`...

    mybatis-spring-1.0.0-RC3-bundle

    通过这个库,我们可以将MyBatis的SqlSessionFactory或SqlSessionTemplate直接注入到Spring管理的Bean中,简化了事务管理和DAO的创建过程,提高了代码的可读性和可维护性。 二、MyBatis-Spring的核心组件 1. ...

    MyBatis与Spring整合jar包(1).rar

    1. **依赖注入**:Spring通过@Autowired注解可以自动将MyBatis的SqlSessionFactory或者SqlSessionTemplate注入到我们的Service层,这样我们就可以在Service层直接使用MyBatis进行数据库操作,无需手动创建SqlSession...

    spring ibatis 配置(包括事务管理)

    通过以上步骤,我们就完成了Spring与iBatis的集成配置,包括了数据源、SqlSessionFactory、SqlSessionTemplate、Mapper接口的扫描以及事务管理。这样,我们就可以在Spring的管理下,利用iBatis进行高效、灵活的数据...

    mybatis-spring

    MyBatis-Spring 是 MyBatis 与 Spring 框架的桥梁,它通过提供 Spring Bean 容器对 MyBatis SqlSessionFactory 和 SqlSessionTemplate 的管理,使得事务控制、依赖注入等 Spring 功能能够轻松应用到 MyBatis 中。...

    mybatis文档及与sping整合文档

    1. **Bean配置**:需要在Spring配置文件中定义SqlSessionFactory和SqlSessionTemplate,或者使用MapperFactoryBean来加载MyBatis的Mapper接口。 2. **事务管理**:Spring可以控制MyBatis的事务,通过...

    mybatis学习-入门(2)-整合spring

    这包括数据源、SqlSessionFactory和SqlSessionTemplate。数据源是连接数据库的关键,SqlSessionFactory是MyBatis的核心对象,用于创建SqlSession。SqlSessionTemplate是Spring对SqlSession的封装,提供了线程安全的...

    spring-mybatis-spring-1.0.2.zip

    这个库提供了Spring和MyBatis之间的桥梁,使得Spring可以管理SqlSessionFactory和SqlSessionTemplate。 2. **创建SqlSessionFactoryBean**:在Spring的配置文件中,定义一个SqlSessionFactoryBean,它会根据配置...

Global site tag (gtag.js) - Google Analytics