现在的位置: 首页 > 综合 > 正文

Struts2+Spring2.5+Ibatis2.3图书管理[转]

2012年12月08日 ⁄ 综合 ⁄ 共 8376字 ⁄ 字号 评论关闭

看了Ibatis也有好长时间啦,一直也没有和Struts2+Spring2.5进行整合,今天也没有什么任务,写一个简单的例子和大家一起分享下。

   首先建立一下简单的数据库表:sbook

Java代码  收藏代码
  1. drop table if exists sbook;  
  2. create table if not exists sbook  
  3. (  
  4.     id int primary key auto_increment,  
  5.     title varchar(50),  
  6.     author varchar(20),  
  7.     total int,  
  8.     price float,  
  9.     isbn varchar(20),  
  10.     publisher varchar(50)  
  11. );  

   在MyEclipse建立Web工程springibatis,然后把工程所要使用的Jar文件导入:

Java代码  收藏代码
  1. antlr-2.7.2.jar  
  2. aspectjweaver.jar  
  3. commons-collections.jar  
  4. commons-dbcp.jar  
  5. commons-logging-1.0.4.jar  
  6. commons-pool.jar  
  7. //Ibatis整体Jar文件  
  8. ibatis-2.3.0.677.jar  
  9.   
  10. //Mysql JDBC驱动  
  11. mysql-connector.jar  
  12.   
  13. //Spring整体包  
  14. spring.jar              
  15.   
  16. //struts2必须                 
  17. freemarker-2.3.8.jar     
  18. //struts2必须  
  19. ognl-2.6.11.jar         
  20. //struts2核心包  
  21. struts2-core-2.0.11.2.jar  
  22. //struts2整合Spring插件    
  23. struts2-spring-plugin-2.0.11.2.jar   
  24. //struts2必须  
  25. xwork-2.0.5.jar   

以上就是工程中所用到的全部Jar文件。

    现在在Web.xml文件里面为Spring和Struts2做必要的配置:

Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.     <!-- 配置Spring -->  
  7.     <context-param>  
  8.         <param-name>contextConfigLocation</param-name>  
  9.         <param-value>  
  10.             WEB-INF/classes/com/us/jack/config/applicationContext.xml  
  11.             WEB-INF/classes/com/us/jack/config/applicationContext-services.xml  
  12.         </param-value>  
  13.     </context-param>  
  14.     <listener>  
  15.         <listener-class>  
  16.             org.springframework.web.context.ContextLoaderListener  
  17.         </listener-class>  
  18.     </listener>  
  19.     <!-- 配置Struts2 -->  
  20.     <filter>  
  21.         <filter-name>struts2</filter-name>  
  22.         <filter-class>  
  23.             org.apache.struts2.dispatcher.FilterDispatcher  
  24.         </filter-class>  
  25.     </filter>  
  26.     <filter-mapping>  
  27.         <filter-name>struts2</filter-name>  
  28.         <url-pattern>/*</url-pattern>  
  29.     </filter-mapping>  
  30.     <welcome-file-list>  
  31.         <welcome-file>index.jsp</welcome-file>  
  32.     </welcome-file-list>  
  33. </web-app>  

    好了现在Web.xml文件已经配置完成啦。

    现在转入真正要写代码的地方啦。
   首先为sbook表建立必要发POJO类:

Java代码  收藏代码
  1. package com.us.jack.pojo;  
  2. /** 
  3.  * 图书类 
  4.  * @author jack 
  5.  * 
  6.  */  
  7. public class SBook {  
  8.     private int id;  
  9.     private String title;  
  10.     private String author;  
  11.     private int total;  
  12.     private float price;  
  13.     private String isbn;  
  14.     private String publisher;  
  15.          //下面是Getter和Setter方法  
  16.          ……  
  17. }  

这里的属性和数据库sbook表的字段是一一对应的,当然你也可以改成自己想要的字段,在控制此POJO类的XMl文件里做到数据库字段的映射即可。

   

现在请注意啦,到Spring和Ibatis集成配置的关键地方啦:


applicationContext.xml

Java代码  收藏代码
  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.     xsi:schemaLocation="  
  5.             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  
  6.     <bean id="dataSource"  
  7.         class="org.apache.commons.dbcp.BasicDataSource"  
  8.         destroy-method="close">  
  9.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
  10.         <property name="url"  
  11.             value="jdbc:mysql://localhost:3306/ibatisstudy" />  
  12.         <property name="username" value="root" />  
  13.         <property name="password" value="jack" />  
  14.     </bean>  
  15.   
  16.     <!-- SqlMap setup for iBATIS Database Layer -->  
  17.     <bean id="sqlMapClient"  
  18.         class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  
  19. <!-- 特别注意此处,如果做单元测试的话,请把“WEB-INF/classes/”去掉,否则会报找不到sqlMapConfig.xml文件 -->  
  20.         <property name="configLocation"  
  21.             value="WEB-INF/classes/com/us/jack/config/sqlMapConfig.xml" />  
  22.         <property name="dataSource" ref="dataSource" />  
  23.     </bean>  
  24.   
  25.     <!-- 注入BookDAO层 -->  
  26.     <bean id="sbookDAO" class="com.us.jack.dao.impl.SBookDAO">  
  27.         <property name="sqlMapClient" ref="sqlMapClient" />  
  28.     </bean>  
  29. </beans>  

其中sqlMapConfig.xml文件配置Ibatis操作:

Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"  
  3.     "http://www.ibatis.com/dtd/sql-map-config-2.dtd">  
  4. <sqlMapConfig>  
  5.     <sqlMap resource="com/us/jack/dao/impl/maps/SBook.xml"/>  
  6. </sqlMapConfig>  

此处仅用到了SBook.xml文件,所以只需要导入此文件即可,下面来看一下真正处理数据库操作的SBook.xml文件的信息:

Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE sqlMap        
  3.     PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"        
  4.     "http://ibatis.apache.org/dtd/sql-map-2.dtd">  
  5. <sqlMap>  
  6.     <typeAlias alias="sbook" type="com.us.jack.pojo.SBook" />  
  7.     <!-- 添加一本新书 -->  
  8.     <insert id="saveBook" parameterClass="sbook">  
  9.         <selectKey keyProperty="id" resultClass="int">  
  10.             <![CDATA[  
  11.                 SELECT LAST_INSERT_ID() AS VALUE  
  12.             ]]>  
  13.         </selectKey>  
  14.         <![CDATA[  
  15.             INSERT INTO sbook(title,author,total,price,isbn,publisher)  
  16.             VALUES(#title#,#author#,#total#,#price#,#isbn#,#publisher#)  
  17.         ]]>  
  18.     </insert>  
  19.       
  20.     <!-- 删除图书 -->  
  21.     <delete id="deleteBook" parameterClass="int">  
  22.         <![CDATA[  
  23.             DELETE FROM SBOOK WHERE ID=#id#  
  24.         ]]>  
  25.     </delete>  
  26.       
  27.     <!-- 通过出版社名称查找此出版社出版的图书  -->  
  28.     <select id="findBookByPublisher" parameterClass="string"  
  29.         resultClass="sbook">  
  30.         <![CDATA[  
  31.             SELECT * FROM sbook WHERE publisher=#publisher#  
  32.         ]]>  
  33.     </select>  
  34.     <!-- 通过图书唯一的ISBN号码查找图书 -->  
  35.     <select id="findBookByISBN" parameterClass="string"  
  36.         resultClass="sbook">  
  37.         <![CDATA[  
  38.             SELECT * FROM sbook WHERE isbn=#isbn#  
  39.         ]]>  
  40.     </select>  
  41.     <!-- 查找所有的图书 -->  
  42.     <select id="findAllBook" resultClass="sbook">  
  43.         <![CDATA[  
  44.             SELECT * FROM sbook   
  45.         ]]>  
  46.     </select>  
  47.     <!-- 更新图书信息 -->  
  48.     <update id="updateBook" parameterClass="sbook">  
  49.         <![CDATA[  
  50.             UPDATE SBOOK SET   
  51.             title=#title#,author=#author#,price=#price#,total=#total#,isbn=#isbn#,publisher=#publisher#  
  52.             WHERE id=#id#  
  53.         ]]>  
  54.     </update>  
  55.     <!-- 查找特定图书 -->  
  56.     <select id="findBookById" parameterClass="int" resultClass="sbook">  
  57.         <![CDATA[  
  58.             SELECT * FROM sbook WHERE ID=#id#  
  59.         ]]>  
  60.     </select>  
  61. </sqlMap>  

applicationContext-services.xml处理业务层和事务控制:

Java代码  收藏代码
  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:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:tx="http://www.springframework.org/schema/tx"  
  6.     xsi:schemaLocation="  
  7.             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  8.             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  9.             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">  
  10.     <bean id="sbookServices" class="com.us.jack.services.impl.SBookServices">  
  11.         <property name="sbookDAO" ref="sbookDAO"/>  
  12.     </bean>  
  13.     <!-- 将BookAction交给Spring控制 -->  
  14.     <bean id="sbookAction" class="com.us.jack.action.SBookAction">  
  15.         <property name="sbookServices" ref="sbookServices"/>  
  16.     </bean>  
  17.     <!-- Transaction manager for a single JDBC DataSource -->  
  18.     <bean id="transactionManager"  
  19.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  20.         <property name="dataSource" ref="dataSource" />  
  21.     </bean>  
  22.   
  23.     <aop:config>  
  24.         <!-- 管理事务操作 -->  
  25.         <aop:pointcut id="servicesPointcut"  
  26.             expression="execution(* com.us.jack.services.*.*(..))" />  
  27.         <aop:advisor advice-ref="txAdvice"  
  28.             pointcut-ref="servicesPointcut" />  
  29.     </aop:config>  
  30.     <!-- 事务控制 -->  
  31.     <tx:advice id="txAdvice" transaction-manager="transactionManager">  
  32.         <tx:attributes>  
  33.             <tx:method name="save*" propagation="REQUIRED" />  
  34.             <tx:method name="update*" propagation="REQUIRED" />  
  35.             <tx:method name="remove*" propagation="REQUIRED" />  
  36.             <tx:method name="get*" read-only="true" />  
  37.         </tx:attributes>  
  38.     </tx:advice>  
  39. </beans>  

上面是对Spring事务和业务层的控制配置。

剩下的就是对DAO层和Services层以及Action层啦,这里就不在对此部分内容进行详细描述啦,如果感兴趣的朋友,请下载源代码查看。

原文地址:http://jackzhangyunjie.iteye.com/blog/247467

抱歉!评论已关闭.