看了Ibatis也有好长时间啦,一直也没有和Struts2+Spring2.5进行整合,今天也没有什么任务,写一个简单的例子和大家一起分享下。
首先建立一下简单的数据库表:sbook
在MyEclipse建立Web工程springibatis,然后把工程所要使用的Jar文件导入:
以上就是工程中所用到的全部Jar文件。
现在在Web.xml文件里面为Spring和Struts2做必要的配置:
好了现在Web.xml文件已经配置完成啦。
现在转入真正要写代码的地方啦。
首先为sbook表建立必要发POJO类:
这里的属性和数据库sbook表的字段是一一对应的,当然你也可以改成自己想要的字段,在控制此POJO类的XMl文件里做到数据库字段的映射即可。
现在请注意啦,到Spring和Ibatis集成配置的关键地方啦:
applicationContext.xml
其中sqlMapConfig.xml文件配置Ibatis操作:
此处仅用到了SBook.xml文件,所以只需要导入此文件即可,下面来看一下真正处理数据库操作的SBook.xml文件的信息:
applicationContext-services.xml处理业务层和事务控制:
上面是对Spring事务和业务层的控制配置。
剩下的就是对DAO层和Services层以及Action层啦,这里就不在对此部分内容进行详细描述啦,如果感兴趣的朋友,请下载源代码查看。
首先建立一下简单的数据库表:sbook
- droptableifexistssbook;
- createtableifnotexistssbook
- (
- idintprimarykeyauto_increment,
- titlevarchar(50),
- authorvarchar(20),
- totalint,
- pricefloat,
- isbnvarchar(20),
- publishervarchar(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做必要的配置:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <web-appversion="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文件已经配置完成啦。
现在转入真正要写代码的地方啦。

首先为sbook表建立必要发POJO类:
- packagecom.us.jack.pojo;
- /**
- *图书类
- *@authorjack
- *
- */
- publicclassSBook{
- privateintid;
- privateStringtitle;
- privateStringauthor;
- privateinttotal;
- privatefloatprice;
- privateStringisbn;
- privateStringpublisher;
- //下面是Getter和Setter方法
- ……
- }
这里的属性和数据库sbook表的字段是一一对应的,当然你也可以改成自己想要的字段,在控制此POJO类的XMl文件里做到数据库字段的映射即可。
现在请注意啦,到Spring和Ibatis集成配置的关键地方啦:
applicationContext.xml
- <?xmlversion="1.0"encoding="UTF-8"?>
- <beansxmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
- <beanid="dataSource"
- class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <propertyname="driverClassName"value="com.mysql.jdbc.Driver"/>
- <propertyname="url"
- value="jdbc:mysql://localhost:3306/ibatisstudy"/>
- <propertyname="username"value="root"/>
- <propertyname="password"value="jack"/>
- </bean>
- <!--SqlMapsetupforiBATISDatabaseLayer-->
- <beanid="sqlMapClient"
- class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
- <!--特别注意此处,如果做单元测试的话,请把“WEB-INF/classes/”去掉,否则会报找不到sqlMapConfig.xml文件-->
- <propertyname="configLocation"
- value="WEB-INF/classes/com/us/jack/config/sqlMapConfig.xml"/>
- <propertyname="dataSource"ref="dataSource"/>
- </bean>
- <!--注入BookDAO层-->
- <beanid="sbookDAO"class="com.us.jack.dao.impl.SBookDAO">
- <propertyname="sqlMapClient"ref="sqlMapClient"/>
- </bean>
- </beans>
其中sqlMapConfig.xml文件配置Ibatis操作:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEsqlMapConfigPUBLIC"-//iBATIS.com//DTDSQLMapConfig2.0//EN"
- "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
- <sqlMapConfig>
- <sqlMapresource="com/us/jack/dao/impl/maps/SBook.xml"/>
- </sqlMapConfig>
此处仅用到了SBook.xml文件,所以只需要导入此文件即可,下面来看一下真正处理数据库操作的SBook.xml文件的信息:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEsqlMap
- PUBLIC"-//ibatis.apache.org//DTDSQLMap2.0//EN"
- "http://ibatis.apache.org/dtd/sql-map-2.dtd">
- <sqlMap>
- <typeAliasalias="sbook"type="com.us.jack.pojo.SBook"/>
- <!--添加一本新书-->
- <insertid="saveBook"parameterClass="sbook">
- <selectKeykeyProperty="id"resultClass="int">
- <![CDATA[
- SELECTLAST_INSERT_ID()ASVALUE
- ]]>
- </selectKey>
- <![CDATA[
- INSERTINTOsbook(title,author,total,price,isbn,publisher)
- VALUES(#title#,#author#,#total#,#price#,#isbn#,#publisher#)
- ]]>
- </insert>
- <!--删除图书-->
- <deleteid="deleteBook"parameterClass="int">
- <![CDATA[
- DELETEFROMSBOOKWHEREID=#id#
- ]]>
- </delete>
- <!--通过出版社名称查找此出版社出版的图书-->
- <selectid="findBookByPublisher"parameterClass="string"
- resultClass="sbook">
- <![CDATA[
- SELECT*FROMsbookWHEREpublisher=#publisher#
- ]]>
- </select>
- <!--通过图书唯一的ISBN号码查找图书-->
- <selectid="findBookByISBN"parameterClass="string"
- resultClass="sbook">
- <![CDATA[
- SELECT*FROMsbookWHEREisbn=#isbn#
- ]]>
- </select>
- <!--查找所有的图书-->
- <selectid="findAllBook"resultClass="sbook">
- <![CDATA[
- SELECT*FROMsbook
- ]]>
- </select>
- <!--更新图书信息-->
- <updateid="updateBook"parameterClass="sbook">
- <![CDATA[
- UPDATESBOOKSET
- title=#title#,author=#author#,price=#price#,total=#total#,isbn=#isbn#,publisher=#publisher#
- WHEREid=#id#
- ]]>
- </update>
- <!--查找特定图书-->
- <selectid="findBookById"parameterClass="int"resultClass="sbook">
- <![CDATA[
- SELECT*FROMsbookWHEREID=#id#
- ]]>
- </select>
- </sqlMap>
applicationContext-services.xml处理业务层和事务控制:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <beansxmlns="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/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsd
- http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
- <beanid="sbookServices"class="com.us.jack.services.impl.SBookServices">
- <propertyname="sbookDAO"ref="sbookDAO"/>
- </bean>
- <!--将BookAction交给Spring控制-->
- <beanid="sbookAction"class="com.us.jack.action.SBookAction">
- <propertyname="sbookServices"ref="sbookServices"/>
- </bean>
- <!--TransactionmanagerforasingleJDBCDataSource-->
- <beanid="transactionManager"
- class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <propertyname="dataSource"ref="dataSource"/>
- </bean>
- <aop:config>
- <!--管理事务操作-->
- <aop:pointcutid="servicesPointcut"
- expression="execution(*com.us.jack.services.*.*(..))"/>
- <aop:advisoradvice-ref="txAdvice"
- pointcut-ref="servicesPointcut"/>
- </aop:config>
- <!--事务控制-->
- <tx:adviceid="txAdvice"transaction-manager="transactionManager">
- <tx:attributes>
- <tx:methodname="save*"propagation="REQUIRED"/>
- <tx:methodname="update*"propagation="REQUIRED"/>
- <tx:methodname="remove*"propagation="REQUIRED"/>
- <tx:methodname="get*"read-only="true"/>
- </tx:attributes>
- </tx:advice>
- </beans>
上面是对Spring事务和业务层的控制配置。
剩下的就是对DAO层和Services层以及Action层啦,这里就不在对此部分内容进行详细描述啦,如果感兴趣的朋友,请下载源代码查看。