文档章节

spring+mybatis时会出现Cannot load JDBC driver class ${jdbc.driverClassName}'

夜丶魂
 夜丶魂
发布于 2017/03/30 19:52
字数 286
阅读 26
收藏 0

使用spring+mybatis时会出现Cannot load JDBC driver class ${jdbc.driverClassName}之类的出错。

原因是在spring里使用org.mybatis.spring.mapper.MapperScannerConfigurer 进行自动扫描的时候,设置了sqlSessionFactory 的话,可能会导致PropertyPlaceholderConfigurer失效,也就是用${jdbc.username}这样之类的表达式,将无法获取到properties文件里的内容。 导致这一原因是因为,MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置sqlSessionFactory的话,会导致提前初始化一些类,这个时候,PropertyPlaceholderConfigurer还没来得及替换定义中的变量,导致把表达式当作字符串复制了。 但如果不设置sqlSessionFactory 属性的话,就必须要保证sessionFactory在spring中名称一定要是sqlSessionFactory ,否则就无法自动注入。又或者直接定义 MapperFactoryBean ,再或者放弃自动代理接口方式。 

解决方案:将

<property name="sqlSessionFactory" ref="sqlSessionFactory"></property> 
<!-- 改成 -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />

ps:在项目过程中还遇到mybatis返回的map值中出现重复值的现象,解决方案是换了高版本的mybatis jar包就可以了。
 

© 著作权归作者所有

夜丶魂
粉丝 8
博文 214
码字总数 136390
作品 0
长宁
高级程序员
私信 提问
spring 配置文件beans.xml使用占位符报异常java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

1.不使用占位符,beans.xml配置如下: 2.测试时没有问题,而使用占位符,beans.xml如下: 3.在src目录下新建jdbc.properties,内容如下: jdbc.driverClassName=com.mysql.jdbc.Driver jdbc....

liuhuics10
2015/11/16
474
6
spring+mybatis,事务不起作用,求帮忙

spring + mybatis,开始annotation式事务 配置如下: 在Service层使用@Transactional,Service没有用接口 @Transactional public void registerAccount(Account account, String email, Long......

grdhgx
2013/09/03
1K
4
spring+mybatis的配置文件?

问在sping+mybatis项目中,配置文件的有点问题那就是为什么在mybatis的配置文件中有一个数据库的配置文件 而在sping的配置文件中也有一个spring的配置文件 这两个配置文件不是重复的吗?为什...

我爱编程zc
2016/08/09
295
3
读取外部配置文件*.properties

/** 获得数据库连接 @param @author lzj */ public Statement stat=null;public ResultSet rs=null; try{ }catch(Exception e){ }...

LiShixi
2011/09/01
0
0
JDBC中获取连接的两种途径:DRIVERMANAGER和DATASOURCE

java.sql.DriverManager The basic service for managing a set of JDBC drivers. NOTE: The interface, new in the JDBC 2.0 API, provides another way to connect to a data source. The ......

刘小兵2014
2011/07/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在Javascript中Eval函数的使用

【eval()函数】 JavaScript有许多小窍门来使编程更加容易。 其中之一就是eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。 举个小例子: var the_unevaled_ans...

花漾年华
11分钟前
1
0
[日更-2019.5.22、23] Android 系统的分区和文件系统(二)--Android 文件系统中的文件

声明 Android系统中有很多分区,每个分区内的文件系统一般都不同的,使用ADB进入系统/目录下可发现挂载这很多的目录,不同的目录中可来自不同的分区及文件系统; 那么,就来分下这些目录里面...

小馬佩德罗
15分钟前
2
0
数组操作相关算法

/*数组的相关的算法操作:1、在数组中找最大值/最小值*/class Test11_FindMax{public static void main(String[] args){int[] array = {4,2,6,8,1};//在数组中找最大...

architect刘源源
今天
2
0
okhttp3 以上版本在安卓9.0无法请求数据的解决方案

应用官方的说明:在 Android 6.0 中,我们取消了对 Apache HTTP 客户端的支持。 从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。且Android P 限制了明文流量...

chenhongjiang
今天
12
0
简单示例:NodeJs连接mysql数据库

开篇引用网上的说法: 简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于...

李朝强
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部