Spring3.2+mybatis3.2+Struts2.3整合配置文件大全
Posted Qiao_Zhi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring3.2+mybatis3.2+Struts2.3整合配置文件大全相关的知识,希望对你有一定的参考价值。
0.配置文件目录
1.Spring配置
applicationContext-dao.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-- 0.连接池属性设置读取指定的properties文件 --> <context:property-placeholder location="classpath:db.properties" /> <!-- 1.将连接池放入spring容器 --> <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="jdbcUrl" value="${jdbc.url}"></property> <property name="driverClass" value="${jdbc.driver}"></property> <property name="user" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!--2. 配置 Mybatis的会话工厂 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 数据源 --> <property name="dataSource" ref="dataSource" /> <!-- 配置Mybatis的核心 配置文件所在位置 --> <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" /> </bean> <!-- 3.1 mapper代理配置方法一 这种方法需要大量重复的配置代理对象 MapperFactoryBean:根绝mapper接口生成代理对象 <bean id="selectUser" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="cn.qlq.core.dao.SelectUser"></property> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean> --> <!-- 3.2通过MapperScannerConfigurer扫描进行批量生成代理对象 遵循规范:mapper.java和mapper.xml名字一样且在同一个目录下 自动扫描出来的代理对象的id为mapper类类名(首字母小写) --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 指定扫描的包名,如果有多个,用半角逗号分隔 --> <property name="basePackage" value="cn.xm.exam.mapper"></property> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- 4.配置事务管理器 --> <!-- 事务核心管理器,封装了事务操作,依赖于连接池 --> <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 5.开启注解管理aop事务 --> <tx:annotation-driven /> <!-- 事务模板对象,依赖于事务核心管理器 --> <bean name="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager" ref="transactionManager"></property> </bean> <!-- ················开始使用XML管理事务························ --> <!-- 配置事务通知(无论哪种方式都要用到事务的核心管理器) --> <tx:advice transaction-manager="transactionManager" id="firstTx"> <tx:attributes> <!--以方法为单位,指定方法应用事务什么属性 isolation:隔离级别 read-only:只读属性 propagation:传播行为 --> <!-- 企业中运用通配符命名规则。两套增删改查(8种) --> <tx:method name="save*" isolation="DEFAULT" read-only="false" propagation="REQUIRED" /> <tx:method name="add*" isolation="DEFAULT" read-only="false" propagation="REQUIRED" /> <tx:method name="delete*" isolation="DEFAULT" read-only="false" propagation="REQUIRED" /> <tx:method name="remove*" isolation="DEFAULT" read-only="false" propagation="REQUIRED" /> <tx:method name="update*" isolation="DEFAULT" read-only="false" propagation="REQUIRED" /> <tx:method name="modify*" isolation="DEFAULT" read-only="false" propagation="REQUIRED" /> <tx:method name="get*" isolation="DEFAULT" read-only="true" propagation="REQUIRED" /> <tx:method name="find*" isolation="DEFAULT" read-only="true" propagation="REQUIRED" /> </tx:attributes> </tx:advice> <!-- 配置织入 --> <aop:config> <!-- 配置切点表达式 --> <aop:pointcut expression="execution(* cn.xm.exam.service.impl.*.*ServiceImpl.*(..))" id="texPc" /> <!-- 配置切面:切点+通知 advice-ref:通知名称 pointcut-ref:切点名称 --> <aop:advisor advice-ref="firstTx" pointcut-ref="texPc" /> </aop:config> <aop:config> <!-- 配置切点表达式 --> <aop:pointcut expression="execution(* cn.xm.exam.service.impl.*.*.*ServiceImpl.*(..))" id="secondPc" /> <!-- 配置切面:切点+通知 advice-ref:通知名称 pointcut-ref:切点名称 --> <aop:advisor advice-ref="firstTx" pointcut-ref="secondPc" /> </aop:config> </beans>
applicationContext-service.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-- 4.开启组件自动扫描,也就是启用注解。前提是导入spring-context-3.2.xsd约束和引入新的命名空间 --> <context:component-scan base-package="cn.xm.exam.service"></context:component-scan> </beans>
applicationContext-action.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-- 与struts2整合的配置 --> <!-- 扫描Action基本包 --> <context:component-scan base-package="cn.xm.exam.action"></context:component-scan> </beans>
2.Struts配置
struts.xml (主配置文件)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.i18n.encoding" value="utf-8"></constant> <constant name="devMode" value="true"></constant> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.action.extension" value="action,do" /> <constant name="struts.objectFactory" value="spring"></constant> <!-- leilong --> <include file="struts/question.xml"></include> <!-- 乔利强引入的 --> <include file="struts/ExamPaper.xml"></include> <include file="struts/Exam.xml"></include> <include file="struts/Haul.xml"></include> </struts>
Exam.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="exam" namespace="/" extends="json-default,struts-default"> <!-- 全局结果集,将response转换为json传到前台 --> <global-results> <result name="success" type="json"> <param name="root">response</param> </result> </global-results> <!-- 添加考试 --> <action name="exam_*" class="addExamAction" method="{1}"></action> <!-- 查询考试 --> <action name="findExam_*" class="findExamAction" method="{1}"></action> <!--删除考试 --> <action name="deleteExam" class="deleteExamAction"></action> <!--修改考试 --> <action name="UpdateExam_*" class="updateExamAction" method="{1}"> <!-- 将信息带到修改界面 (页面跳转的方式) --> <result name="findExam">/view/examParper/exam/modifyExam.jsp</result> <!-- 修改考试(ajax+json方式) --> </action> <!-- 导出参考人员信息 --> <action name="exportExamEmployees" class="extExamEmployeesAction"> <result type="stream"> <!-- 其他的参数在类中设置或者使用默认 --> <param name="contentType">application/octet-stream</param> <param name="inputName">inputStream</param> <param name="contentDisposition">attachment;filename="${downloadFileName}"</param> <param name="bufferSize">8192</param> </result> </action> <!-- 导出试卷答案信息 --> <action name="extPaperAnswer" class="extPaperAnswerAction"> <result type="stream"> <!-- 其他的参数在类中设置或者使用默认 --> <param name="contentType">application/octet-stream</param> <param name="inputName">inputStream</param> <param name="contentDisposition">attachment;filename="${downloadFileName}"</param> <param name="bufferSize">8192</param> </result> </action> <!-- 导出试卷信息 --> <action name="extPaper" class="extExamPaperAction"> <result type="stream"> <!-- 其他的参数在类中设置或者使用默认 --> <param name="contentType">application/octet-stream</param> <param name="inputName">inputStream</param> <param name="contentDisposition">attachment;filename="${downloadFileName}"</param> <param name="bufferSize">8192</param> </result> </action> </package> </struts>
3.mybatis配置
SqlMapConfig.xml (主配置)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 只需要定义个别名,这个应该有 --> <typeAliases> <package name="cn.xm.exam.bean.common" /> <package name="cn.xm.exam.bean.employee" /> <package name="cn.xm.exam.bean.employee.in" /> <package name="cn.xm.exam.bean.employee.out" /> <package name="cn.xm.exam.bean.exam" /> <package name="cn.xm.exam.bean.grade" /> <package name="cn.xm.exam.bean.question" /> <package name="cn.xm.exam.bean.system" /> <package name="cn.xm.exam.bean.trainContent" /> </typeAliases> </configuration>
mapper映射配置:(要与接口放在同一目录,且名字一样)
EmployeeOutCustomMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="cn.xm.exam.mapper.employee.out.custom.EmployeeOutCustomMapper"> <!-- S qlq --> <!-- S 查询外部参考人员 --> <select id="getExamEmployeeOuts" resultType="cn.xm.exam.vo.exam.ExamEmployeeOutQueryVo" parameterType="hashmap"> SELECT e.employeeId, e.idcode, e.name, e.sex, e.minusNum, e.trainStatus, u.name AS unitname FROM employee_out e, unit u <where> <include refid="getExamEmployeeOuts_where"></include> </where> ORDER BY u.name </select> <sql id="getExamEmployeeOuts_where"> <!-- 根据部门名称查询部门ID --> <if test="1==1"> and e.unitId = u.unitId </if> <if test="unitNames !=null"> and e.unitId IN(SELECT unitId FROM unit WHERE unit.name IN <foreach collection="unitNames" item="unitName" separator="," open="(" close=")"> #{unitName} </foreach> ) </if> <if test="sex!=null"> and e.sex=#{sex} </if> <if test="idCode!=null"> and e.idCode=#{idCode} </if> <if test="trainStatus!=null"> and e.trainStatus=#{trainStatus} </if> <if test="name!=null"> and e.name like \'%${name}%\' </if> <if test="mixMinus!=null"> and e.minusNum>#{mixMinus} </if> <if test="maxMinus!=null"> and e.minusNum<#{maxMinus} </if> <!-- 如果选择进入黑名单扣分大于12 --> <if test="isBlack!=null"> and e.minusNum>12 </if> </sql> <!-- E 查询外部参考人员 --> <!--Spring3.2+mybatis3.2+Struts2.3整合配置文件大全spring3.2.2+mybatis3.2.3+c3p0项目整合
spring3.2.0与mybatis3.2.7整合出错--Failed to read candidate component class--nested exception is java.lan