之前一直使用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详细教程,需要的朋友可以参考下
SpringBoot 整合 MyBatis。解决因Mybatis-Spring版本过高引起的“Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required”异常
spring+mybatis dao层使用动态代理实现org.mybatis.spring.mapper.MapperScannerConfigurer类设置属性指定dao接口以及sqlSessionFactory 或SqlSessionTemplate
本文主要介绍mybaits非配置原因出错,这里对这个出现的问题做了详细介绍,及解决办法,有兴趣的小伙伴可以参考下
java项目 mvc框架 java项目 boot框架引入了mvc配置 支持分层配置 java项目 mvc框架 java项目 boot框架引入了mvc配置 支持分层配置
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> class="org.springframework....
主要介绍了详解 MapperScannerConfigurer之sqlSessionFactory注入方式的相关资料,需要的朋友可以参考下
sqlSessionFactory方式_多数据源的案例代码,只需修改数据库配置url和sql语句即可。
创建数据库配置属性文件 jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis_db?useSSL=false&serverTimezone=UTC jdbc.username=root jdbc.password=123456
计算机后端-Java-java高手加薪课视频教程02 Mybatis核心api_SqlSessionFactory对.mp4
计算机后端-Java-java高手加薪课视频教程03 Mybatis核心api_SqlSessionFactory对象.mp4
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!--扫描pojo包,给包下所有pojo对象起别名--> <property name=...
初始条件 : Maven的3.3.3 JDK 1.8测试程序 : 从项目根目录和初始状态开始(从github重新开始) mvn全新安装(由于存在模块间依赖关系而需要) mvn -f ./TestApiWar/pom.xml spring-boot:运行预期的 : 应该正确...
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" ...
NULL 博文链接:https://yansxjl.iteye.com/blog/2352594
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)...
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 手工配置每次新增xml文件 需要修改mybatisConfig.xml文件 --> <!-...
配置多数据源时,要让spring-boot不自动注入data-source和sqlSessionFactory。 。常问问题1,出现了如下BUG org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection....
<!... SQLSessionFactory SQLSessionFactory = new SQLSessionFactoryBuilder().build(inputStream); 这一步首先读取了mybatis的configuration xml配置文件,用这个流构造了Factory的Builder,它底
Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '...