Spring与Mybatis配置问题

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

spring.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 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     <context:property-placeholder location="classpath:jdbc.properties" system-properties-mode="NEVER"/>
11     <!-- 自动扫描 -->
12     <context:component-scan base-package="com.zhu.test.service"></context:component-scan>
13 </beans>

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

spring-mybatis.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 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     <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
18         <!-- <property name="driverClassName" value="${driver}" /> -->
19         <property name="url" value="${url}" />
20         <property name="username" value="${username}" />
21         <property name="password" value="${password}" />
22         <!-- 初始化时建立物理连接的个数 -->
23         <property name="initialSize" value="0" />
24         <!-- 最大连接池数量 -->
25         <property name="maxActive" value="20" />
26         <!--minIdle: 最小空闲连接-->
27         <property name="minIdle" value="0" />
28         <!-- 获取连接时最大等待时间 -->
29         <property name="maxWait" value="60000" />
30         <!-- 用来检测连接是否有效的sql,要求是一个查询语句 -->
31         <property name="validationQuery" value="${validationQuery}" />
32         <!-- 是否申请连接时执行validationQuery检测连接是否有效 -->
33         <property name="testOnBorrow" value="false" />
34         <property name="testOnReturn" value="false" />
35         <property name="testWhileIdle" value="true" />
36         <property name="timeBetweenEvictionRunsMillis" value="60000" />
37         <property name="minEvictableIdleTimeMillis" value="25200000" />
38         <property name="removeAbandoned" value="true" />
39         <property name="removeAbandonedTimeout" value="1800" />
40         <property name="logAbandoned" value="true" />
41         <property name="filters" value="mergeStat" />
42     </bean>
43
44     <!-- <context:annotation-config></context:annotation-config>  -->
45
46     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
47         <property name="dataSource" ref="dataSource" />
48         <property name="mapperLocations" value="classpath:com/zhu/test/mapping/*.xml" />
49     </bean>
50     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
51         <property name="basePackage" value="com.zhu.test.dao" />
52         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
53     </bean>
54
55     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
56         <property name="dataSource" ref="dataSource" />
57     </bean>
58     <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
59         <tx:attributes>
60             <tx:method name="add*" propagation="REQUIRED" />
61             <tx:method name="append*" propagation="REQUIRED" />
62             <tx:method name="insert*" propagation="REQUIRED" />
63             <tx:method name="save*" propagation="REQUIRED" />
64             <tx:method name="update*" propagation="REQUIRED" />
65             <tx:method name="modify*" propagation="REQUIRED" />
66             <tx:method name="edit*" propagation="REQUIRED" />
67             <tx:method name="delete*" propagation="REQUIRED" />
68             <tx:method name="remove*" propagation="REQUIRED" />
69             <tx:method name="repair" propagation="REQUIRED" />
70             <tx:method name="delAndRepair" propagation="REQUIRED" />
71
72             <tx:method name="get*" propagation="SUPPORTS" />
73             <tx:method name="find*" propagation="SUPPORTS" />
74             <tx:method name="load*" propagation="SUPPORTS" />
75             <tx:method name="search*" propagation="SUPPORTS" />
76             <tx:method name="datagrid*" propagation="SUPPORTS" />
77
78             <tx:method name="*" propagation="SUPPORTS" />
79         </tx:attributes>
80     </tx:advice>
81     <aop:config>
82         <aop:pointcut id="transactionPointcut" expression="execution(* com.zhu.test.service..*Impl.*(..))" />
83         <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
84     </aop:config>
85
86 </beans>

该文件所做的工作是配置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文件中的这句<context:property-placeholder location="classpath:jdbc.properties"/>,<context:property-placeholder />有一个system-properties-mode属性,默认为ENVIRONMENT,会先去系统变量中寻找,修改之<context:property-placeholder location="classpath:jdbc.properties" system-properties-mode="NEVER"/>,值NEVER表示不去寻找系统变量中的值,问题便解决了【参考自http://www.oschina.net/question/873438_234580】。

另外,关于<context:property-placeholder />:

 1【来自http://blog.csdn.net/ws_blog/article/details/46986051】   <context:property-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

时间: 2024-10-14 00:53:59

Spring与Mybatis配置问题的相关文章

spring结合Mybatis的框架搭建(一)

一:前沿 2015年新年上班的第二天,第一天就打了一天的酱油哦,只是下午开始搭建自己毕业设计的框架,搭建的是spring+spring mvc+MyBatis的框架.今天遇到了一个问题,结果弄了我一天时间,所以啊,路还是的一步步的走,弄过了才知道是怎么回事.现在记载下这个问题. 二:问题 在自己搭建的时候,我觉得自己一次都没有去搭建过,所以就想从最简单的一种开始,所以数据库连接用的就是org.springframework.jdbc.datasource.DriverManagerDataSou

2017年9月3日 Spring及Mybatis中连接数据库的不同方式

连接数据库用spring和mybatis中使用的方法可以不同,mybaits可以不用写数据库的配置文件 Spring的连接方法 <!-- 读取属性文件(.properties)的内容 --> <!-- location:指定要读取的属性文件的位置及文件名. 注: classpath:表示依据类路径去查找 容器依据路径读取属性文件的内容, 并且将这些内容存放到Properties对象上 --> //数据库的登入数据文件 //文件名db.properties #db connectio

基于Spring+SpringMVC+Mybatis的Web系统搭建

主要的后端架构:Spring+SpringMVC+Mybatis+Shiro+Maven  IDE:IntelliJ IDEA 15.0.2 jdk:1.8.0_66 系统完整源码 https://github.com/Wellat/Factor 系统目录结构 跑起来效果 搭建步骤 1.用Idea创建maven项目 2.配置pom.xml文件,添加依赖 1 <?xml version="1.0" encoding="UTF-8"?> 2 <proj

Spring与Mybatis环境搭建 【转】

SH框架的结合几乎家喻户晓,但是一般的中小项目,使用Spring和MyBatis就够了,而且MyBatis轻便好使,易上手,值得大家尝试一次. 开篇简介: Spring: Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. 两个重要模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器. 控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务. 容器 (

【SpringMVC学习04】Spring、MyBatis和SpringMVC的整合

前两篇springmvc的文章中都没有和mybatis整合,都是使用静态数据来模拟的,但是springmvc开发不可能不整合mybatis,另外mybatis和spring的整合我之前学习mybatis的时候有写过一篇,但是仅仅是整合mybatis和spring,所以这篇文章我系统的总结一下spring.mybatis和springmvc三个框架的整合(后面学习到maven时,我会再写一篇使用maven整合的文章,这篇没有用到maven). 1. jar包管理 我之前有写过一篇spring.hi

SSM框架 (Spring+SpringMVC+MyBatis)

SSM框架--详细整合教程(Spring+SpringMVC+MyBatis) springspringmvcmybatis整合教程ssm整合 1.基本概念  1.1.Spring          Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.Spri

基于Spring + Spring MVC + Mybatis + shiro 高性能web构建

一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.AngularJS,做了大量的研究,对前后端交互有了更深层次的认识. 今天抽个时间写这篇文章,我有预感,这将是一篇很详细的文章,详细的配置,详细的注释,看起来应该很容易懂. 用最合适的技术去实现,并不断追求最佳实践.这就是架构之道. 希望这篇文章能给你们带来一些帮助,同时希望你们可以为这个项目贡献你的想法. 源码地址:https://github.com/starzou/quick4j 点击打开 看我们的项目结构: 是一个典型

spring security+mybatis+springMVC构建一个简单的项目

1.引用 spring security ,这是一种基于spring AOP和Servlet的过滤安全框架.它提供全面的安全性解决方案,同时在web请求级和方法的调用级处理身份确认和授权.在spring framework基础上,spring security充分利用了依赖注入(DI,Dependency Injection)和AOP技术. 下面就让我们用一个小的晓得项目来出初步了解Spring Security 的强大功能吧. 2.项目实战    1)项目的技术架构:maven+spring

SSM框架Spring+SpringMVC+MyBatis——详细整合教程

摘要: 包括SQL Maps和Data Access ObjectsDAOMyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的... 摘要:   spring MVC属于SpringFrameWork的后续产品已经融合在Spring Web Flow里面.Spring MVC 分离了控制器.模型对... 1.基本概念 1.1.Spring Spring是一个开源框架Spring是于2003 年兴起的一个轻量级的Java 开发框架由Rod Johnson 在其著作Expert