Spring与Mybatis配置问题

Spring和Mybatis的整合,主要借助于Spring的依赖注入和控制反转来简化Mybatis的配置,使用两个配置文件【注:此种配置文件网上已经有很多】

spring.xml:

 1 
 2  3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 4     xmlns:context="http://www.springframework.org/schema/context"
 5     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 6             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
 7             http://www.springframework.org/schema/context    
 8             http://www.springframework.org/schema/context/spring-context-3.1.xsd">
 9     
10     
11     
12     package="com.zhu.test.service">        
13 

配置很简单,先使用标签引入外部资源文件,再采用包扫描的方式加载com.zhu.test.service包下的所有类,因为其中的业务逻辑类使用了Spring注解,Spring会将其封装成bean供使用。

spring-mybatis.xml

 1 
 2  3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 4     xmlns:tx="http://www.springframework.org/schema/tx"
 5     xmlns:aop="http://www.springframework.org/schema/aop"
 6     xmlns:context="http://www.springframework.org/schema/context"
 7     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 8             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
 9             http://www.springframework.org/schema/tx 
10             http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
11             http://www.springframework.org/schema/context    
12             http://www.springframework.org/schema/context/spring-context-3.1.xsd 
13             http://www.springframework.org/schema/aop 
14             http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
15     
16     
17     class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
18         
19         
20         
21         
22         
23         
24                 
25             
26            
27         
28                 
29         
30         
31         
32         
33         
34         
35         
36         
37         
38         
39         
40         
41         
42     
43     
44      
45     
46     class="org.mybatis.spring.SqlSessionFactoryBean">
47         
48         
49     
50     class="org.mybatis.spring.mapper.MapperScannerConfigurer">
51         
52          
53         
54     
55     class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
56         
57     
58     
59         
60             
61             
62             
63             
64             
65             
66             
67             
68             
69             
70             
71 
72             
73             
74             
75             
76             
77 
78             
79         
80     
81     
82         
83         
84     
85             
86 
View Code

该文件所做的工作是配置druid数据源,mybatis的Mapper扫描,扫描指定包下的所有mapper,如此便不用逐条加载mapper了,然后是Spring的事务管理。

不过,在配置Spring和Mybatis整合时出现了一些问题,记录之:

①一直报错

说白了,就是没找到com.zhu.test.dao包,这个问题折腾了一天多时间,百思不得解,最后无奈从别处复制粘贴,改一下路径和包名,结果就奇迹般的好了,最后终于找到了问题所在,截图为鉴【下次直接全部替换就不会有这样的问题了】:

1   [com.alibaba.druid.pool.DruidDataSource] - create connection error
2   java.sql.SQLException: Access denied for user 'Dada'@'localhost' (using password: YES)
3     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
4     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
5     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
6     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871)
7     at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
8     at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215)

很显然,该错误说明没使用资源文件中的配置连接数据库,相反却使用了本机名不带密码访问数据库,关键在于spring.xml文件中的这句有一个system-properties-mode属性,默认为ENVIRONMENT,会先去系统变量中寻找,修改之,值NEVER表示不去寻找系统变量中的值,问题便解决了【参考自http://www.oschina.net/question/873438_234580】。

另外,关于

 1【来自http://blog.csdn.net/ws_blog/article/details/46986051
placeholder 2 location="属性文件,多个之间逗号分隔" 3 file-encoding="文件编码" 4 ignore-resource-not-found="是否忽略找不到的属性文件" 5 ignore-unresolvable="是否忽略解析不到的属性,如果不忽略,找不到将抛出异常" 6 properties-ref="本地Properties配置" 7 local-override="是否本地覆盖模式,即如果true,那么properties-ref的属性将覆盖location加载的属性,否则相反" 8 system-properties-mode="系统属性模式,默认ENVIRONMENT(表示先找ENVIRONMENT,再找properties-ref/location的),NEVER:表示永远不用ENVIRONMENT的,O VERRIDE类似于ENVIRONMENT" 9 order="顺序" 10/>

另外附上比较详细的讲解,参考自http://blog.csdn.net/Rickesy/article/details/50791534

你可能感兴趣的:(Spring与Mybatis配置问题)