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

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

drop table if exists sbook;
create table if not exists sbook
(
id int primary key auto_increment,
title varchar(50),
author varchar(20),
total int,
price float,
isbn varchar(20),
publisher varchar(50)
);

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

antlr-2.7.2.jar
aspectjweaver.jar
commons-collections.jar
commons-dbcp.jar
commons-logging-1.0.4.jar
commons-pool.jar
//Ibatis整体Jar文件
ibatis-2.3.0.677.jar

//Mysql JDBC驱动
mysql-connector.jar

//Spring整体包
spring.jar

//struts2必须
freemarker-2.3.8.jar
//struts2必须
ognl-2.6.11.jar
//struts2核心包
struts2-core-2.0.11.2.jar
//struts2整合Spring插件
struts2-spring-plugin-2.0.11.2.jar
//struts2必须
xwork-2.0.5.jar

以上就是工程中所用到的全部Jar文件。
现在在Web.xml文件里面为Spring和Struts2做必要的配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 配置Spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
WEB-INF/classes/com/us/jack/config/applicationContext.xml
WEB-INF/classes/com/us/jack/config/applicationContext-services.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.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

好了现在Web.xml文件已经配置完成啦。
现在转入真正要写代码的地方啦。 :D
首先为sbook表建立必要发POJO类:

package com.us.jack.pojo;
/**
* 图书类
* @author jack
*
*/
public class SBook {
private int id;
private String title;
private String author;
private int total;
private float price;
private String isbn;
private String publisher;
//下面是Getter和Setter方法
……
}

这里的属性和数据库sbook表的字段是一一对应的,当然你也可以改成自己想要的字段,在控制此POJO类的XMl文件里做到数据库字段的映射即可。
[color=darkred]
现在请注意啦,到Spring和Ibatis集成配置的关键地方啦:[/color]
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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/ibatisstudy" />
<property name="username" value="root" />
<property name="password" value="jack" />
</bean>

<!-- SqlMap setup for iBATIS Database Layer -->
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<!-- 特别注意此处,如果做单元测试的话,请把“WEB-INF/classes/”去掉,否则会报找不到sqlMapConfig.xml文件 -->
<property name="configLocation"
value="WEB-INF/classes/com/us/jack/config/sqlMapConfig.xml" />
<property name="dataSource" ref="dataSource" />
</bean>

<!-- 注入BookDAO层 -->
<bean id="sbookDAO" class="com.us.jack.dao.impl.SBookDAO">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
</beans>

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

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

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<typeAlias alias="sbook" type="com.us.jack.pojo.SBook" />
<!-- 添加一本新书 -->
<insert id="saveBook" parameterClass="sbook">
<selectKey keyProperty="id" resultClass="int">
<![CDATA[
SELECT LAST_INSERT_ID() AS VALUE
]]>
</selectKey>
<![CDATA[
INSERT INTO sbook(title,author,total,price,isbn,publisher)
VALUES(#title#,#author#,#total#,#price#,#isbn#,#publisher#)
]]>
</insert>

<!-- 删除图书 -->
<delete id="deleteBook" parameterClass="int">
<![CDATA[
DELETE FROM SBOOK WHERE ID=#id#
]]>
</delete>

<!-- 通过出版社名称查找此出版社出版的图书 -->
<select id="findBookByPublisher" parameterClass="string"
resultClass="sbook">
<![CDATA[
SELECT * FROM sbook WHERE publisher=#publisher#
]]>
</select>
<!-- 通过图书唯一的ISBN号码查找图书 -->
<select id="findBookByISBN" parameterClass="string"
resultClass="sbook">
<![CDATA[
SELECT * FROM sbook WHERE isbn=#isbn#
]]>
</select>
<!-- 查找所有的图书 -->
<select id="findAllBook" resultClass="sbook">
<![CDATA[
SELECT * FROM sbook
]]>
</select>
<!-- 更新图书信息 -->
<update id="updateBook" parameterClass="sbook">
<![CDATA[
UPDATE SBOOK SET
title=#title#,author=#author#,price=#price#,total=#total#,isbn=#isbn#,publisher=#publisher#
WHERE id=#id#
]]>
</update>
<!-- 查找特定图书 -->
<select id="findBookById" parameterClass="int" resultClass="sbook">
<![CDATA[
SELECT * FROM sbook WHERE ID=#id#
]]>
</select>
</sqlMap>

applicationContext-services.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 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="sbookServices" class="com.us.jack.services.impl.SBookServices">
<property name="sbookDAO" ref="sbookDAO"/>
</bean>
<!-- 将BookAction交给Spring控制 -->
<bean id="sbookAction" class="com.us.jack.action.SBookAction">
<property name="sbookServices" ref="sbookServices"/>
</bean>
<!-- Transaction manager for a single JDBC DataSource -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<aop:config>
<!-- 管理事务操作 -->
<aop:pointcut id="servicesPointcut"
expression="execution(* com.us.jack.services.*.*(..))" />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="servicesPointcut" />
</aop:config>
<!-- 事务控制 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="get*" read-only="true" />
</tx:attributes>
</tx:advice>
</beans>

上面是对Spring事务和业务层的控制配置。
剩下的就是对DAO层和Services层以及Action层啦,这里就不在对此部分内容进行详细描述啦,如果感兴趣的朋友,请下载源代码查看。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值