<!-- 編碼后面UserDaoImpl extends SqlSessionDaoSupport implements UserDao執行不了,目錄結構也有所改變,對項目看-->
<!--執行不了的原因mybatis核心包沒導入,導入mybatis較高版本可以執行了-->
<!--做測試list.jsp少了核心標簽庫的jar包,新導入了taglibs-standard-impl-1.2.5.jartaglibs-standard-spec-1.2.5.jar,對下一個注解整合影響改進一樣-->
1、導入jar包,及mysql驅動包5.1.20(后來刪除了commons-logging.jar)
2、web.xml配置文件(重要)
對應用上下文配置文件改名為默認名:applicationContext
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 配置spring --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- struts2的配置 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.class</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> </web-app>

3、mybatis配置文件mybatis.cfg.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.sxt.vo"/> </typeAliases> <mappers> <package name="cn.sxt.dao.UserMapper"/> </mappers> </configuration>
4、編碼 整個目錄結構
UserDao接口
UserDao實現
UserService接口
public interface UserService { public List<User> getAll(); }
UserService實現
public class UserServiceImpl implements UserService { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public List<User> getAll() { return userDao.getAll(); } }
UserAction
public class UserAction { private List<User> list; private UserService userService; public String list(){ list = userService.getAll(); return "success"; } public List<User> getList() { return list; } public void setList(List<User> list) { this.list = list; } public UserService getUserService() { return userService; } public void setUserService(UserService userService) { this.userService = userService; } }
Spring配置文件
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx https://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 配置數據源 dataSource可以使用第三方的數據源的插件,也可以使用spring給我們提供的數據源的插件 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="123"/> </bean> <!-- spring聲明式事務配置,首先導入命名空間tx --> <!-- 配置事務管理器 它引入了一個dataSource,它來管理dataSource--> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置事務通知 --> <tx:advice id="txAdvice" transaction-manager="txManager"> <!-- 配置哪些方法使用什么樣的事務,配置事務的傳播特性 --> <tx:attributes><!--required會去檢查當前有沒有事務開啟,如果有用當前事務,沒有重新開啟一個事務 --> <tx:method name="add" propagation="REQUIRED"/> <tx:method name="insert" propagation="REQUIRED"/> <tx:method name="update" propagation="REQUIRED"/> <tx:method name="delete" propagation="REQUIRED"/> <tx:method name="remove" propagation="REQUIRED"/> <tx:method name="get" read-only="true"/> <tx:method name="*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <aop:config><!-- 正常情況下,這里配置service execution(* cn.sxt.service.impl.*.*(..)) --> <aop:pointcut expression="execution(* cn.sxt.dao.impl.*.*(..))" id="pointcut"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/> </aop:config> <!-- 配置好了,現在再去做測試的時候,雖然有插入和刪除兩條sql,但由於delete的sql有錯誤,所以插入的也 插入不進去了,就起作用了(一個有錯全部回滾) --> <!-- 配置sqlSessionFactory,完全可以取代mybatis.cfg.xml文件,但是這里引用它,它里面還可以找到映射 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations" value="classpath:cn/sxt/vo/*.mapper.xml"/> </bean> <!--$$$$$$$$$$$$$$$$$上面內容是取代mybatis.cfg.xml文件的,沒完全取代,保留了里面的取別名和找實體類的映射功能 --> <import resource="config/spring/user.xml"/>
User.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx https://www.springframework.org/schema/tx/spring-tx.xsd"> <bean id="userDao" class="cn.sxt.dao.impl.UserDaoImpl"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> <bean id="userService" class="cn.sxt.service.impl.UserService"> <property name="userDao" ref="userDao"></property> </bean> <bean id="userAction" class="cn.sxt.action.UserAction"> <property name="userService" ref="userService"></property> </bean> </beans>
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>
<include file="config/struts/user.xml"></include>
</struts>