Struts2+Spring2.5+Ibatis2.3图书管理


看了Ibatis也有好长时间啦,一直也没有和Struts2+Spring2.5进行整合,今天也没有什么任务,写一个简单的例子和大家一起分享下。
首先建立一下简单的数据库表:sbook
Java代码 收藏代码
  1. droptableifexistssbook;
  2. createtableifnotexistssbook
  3. (
  4. idintprimarykeyauto_increment,
  5. titlevarchar(50),
  6. authorvarchar(20),
  7. totalint,
  8. pricefloat,
  9. isbnvarchar(20),
  10. publishervarchar(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. //Mysql JDBC驱动
  10. mysql-connector.jar
  11. //Spring整体包
  12. spring.jar
  13. //struts2必须
  14. freemarker-2.3.8.jar
  15. //struts2必须
  16. ognl-2.6.11.jar
  17. //struts2核心包
  18. struts2-core-2.0.11.2.jar
  19. //struts2整合Spring插件
  20. struts2-spring-plugin-2.0.11.2.jar
  21. //struts2必须
  22. xwork-2.0.5.jar

以上就是工程中所用到的全部Jar文件。
现在在Web.xml文件里面为Spring和Struts2做必要的配置:
Java代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <web-appversion="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. packagecom.us.jack.pojo;
  2. /**
  3. *图书类
  4. *@authorjack
  5. *
  6. */
  7. publicclassSBook{
  8. privateintid;
  9. privateStringtitle;
  10. privateStringauthor;
  11. privateinttotal;
  12. privatefloatprice;
  13. privateStringisbn;
  14. privateStringpublisher;
  15. //下面是Getter和Setter方法
  16. ……
  17. }

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

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

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

其中sqlMapConfig.xml文件配置Ibatis操作:
Java代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEsqlMapConfigPUBLIC"-//iBATIS.com//DTDSQLMapConfig2.0//EN"
  3. "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
  4. <sqlMapConfig>
  5. <sqlMapresource="com/us/jack/dao/impl/maps/SBook.xml"/>
  6. </sqlMapConfig>

此处仅用到了SBook.xml文件,所以只需要导入此文件即可,下面来看一下真正处理数据库操作的SBook.xml文件的信息:
Java代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEsqlMap
  3. PUBLIC"-//ibatis.apache.org//DTDSQLMap2.0//EN"
  4. "http://ibatis.apache.org/dtd/sql-map-2.dtd">
  5. <sqlMap>
  6. <typeAliasalias="sbook"type="com.us.jack.pojo.SBook"/>
  7. <!--添加一本新书-->
  8. <insertid="saveBook"parameterClass="sbook">
  9. <selectKeykeyProperty="id"resultClass="int">
  10. <![CDATA[
  11. SELECTLAST_INSERT_ID()ASVALUE
  12. ]]>
  13. </selectKey>
  14. <![CDATA[
  15. INSERTINTOsbook(title,author,total,price,isbn,publisher)
  16. VALUES(#title#,#author#,#total#,#price#,#isbn#,#publisher#)
  17. ]]>
  18. </insert>
  19. <!--删除图书-->
  20. <deleteid="deleteBook"parameterClass="int">
  21. <![CDATA[
  22. DELETEFROMSBOOKWHEREID=#id#
  23. ]]>
  24. </delete>
  25. <!--通过出版社名称查找此出版社出版的图书-->
  26. <selectid="findBookByPublisher"parameterClass="string"
  27. resultClass="sbook">
  28. <![CDATA[
  29. SELECT*FROMsbookWHEREpublisher=#publisher#
  30. ]]>
  31. </select>
  32. <!--通过图书唯一的ISBN号码查找图书-->
  33. <selectid="findBookByISBN"parameterClass="string"
  34. resultClass="sbook">
  35. <![CDATA[
  36. SELECT*FROMsbookWHEREisbn=#isbn#
  37. ]]>
  38. </select>
  39. <!--查找所有的图书-->
  40. <selectid="findAllBook"resultClass="sbook">
  41. <![CDATA[
  42. SELECT*FROMsbook
  43. ]]>
  44. </select>
  45. <!--更新图书信息-->
  46. <updateid="updateBook"parameterClass="sbook">
  47. <![CDATA[
  48. UPDATESBOOKSET
  49. title=#title#,author=#author#,price=#price#,total=#total#,isbn=#isbn#,publisher=#publisher#
  50. WHEREid=#id#
  51. ]]>
  52. </update>
  53. <!--查找特定图书-->
  54. <selectid="findBookById"parameterClass="int"resultClass="sbook">
  55. <![CDATA[
  56. SELECT*FROMsbookWHEREID=#id#
  57. ]]>
  58. </select>
  59. </sqlMap>

applicationContext-services.xml处理业务层和事务控制:
Java代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="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/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  8. http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsd
  9. http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
  10. <beanid="sbookServices"class="com.us.jack.services.impl.SBookServices">
  11. <propertyname="sbookDAO"ref="sbookDAO"/>
  12. </bean>
  13. <!--将BookAction交给Spring控制-->
  14. <beanid="sbookAction"class="com.us.jack.action.SBookAction">
  15. <propertyname="sbookServices"ref="sbookServices"/>
  16. </bean>
  17. <!--TransactionmanagerforasingleJDBCDataSource-->
  18. <beanid="transactionManager"
  19. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  20. <propertyname="dataSource"ref="dataSource"/>
  21. </bean>
  22. <aop:config>
  23. <!--管理事务操作-->
  24. <aop:pointcutid="servicesPointcut"
  25. expression="execution(*com.us.jack.services.*.*(..))"/>
  26. <aop:advisoradvice-ref="txAdvice"
  27. pointcut-ref="servicesPointcut"/>
  28. </aop:config>
  29. <!--事务控制-->
  30. <tx:adviceid="txAdvice"transaction-manager="transactionManager">
  31. <tx:attributes>
  32. <tx:methodname="save*"propagation="REQUIRED"/>
  33. <tx:methodname="update*"propagation="REQUIRED"/>
  34. <tx:methodname="remove*"propagation="REQUIRED"/>
  35. <tx:methodname="get*"read-only="true"/>
  36. </tx:attributes>
  37. </tx:advice>
  38. </beans>

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值