精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-27
首先建立一下简单的数据库表: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文件已经配置完成啦。 现在转入真正要写代码的地方啦。 首先为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文件里做到数据库字段的映射即可。 现在请注意啦,到Spring和Ibatis集成配置的关键地方啦: 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层啦,这里就不在对此部分内容进行详细描述啦,如果感兴趣的朋友,请下载源代码查看。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-29
以后不断的推出好的 例子 另外JACK我想建议一下 尽量把代码写规范 例如你在开发项目的时候一个登陆 需要坐许多 例如会话跟踪之类的 希望能写全一点 这样看起来更实用 谢谢你的无私奉献!!!
|
|
返回顶楼 | |
发表时间:2008-10-01
看上楼上说会话跟踪,我突然有个问题,一直不太明白。请问session的保存需要多少内存? 还有这个内存是占用服务器本身的内存还是占用jvm的内存?
如果是占用jvm内存,如果我有1000个人甚至10000个,那jvm内存不是很快就用完了? |
|
返回顶楼 | |
发表时间:2008-10-01
weblogic jvm内存设置好像是2.2G左右。tomcat,jboss不知道多少。我这里有一个应用,一群程序员把数据取出来生成excel,然后3个人同时访问jvm就高达1G,应用没办法跑,后来限制weblogic queue,就是那个页面只能跑一个queue,其他人是进不来的。
|
|
返回顶楼 | |
发表时间:2008-10-08
楼主的例子很好啊。
|
|
返回顶楼 | |
发表时间:2008-10-09
楼主既然用Spring 2.5,为什么不用一下Annotation方式的IoC呢
|
|
返回顶楼 | |
发表时间:2008-10-30
caipanjin 写道 楼主既然用Spring 2.5,为什么不用一下Annotation方式的IoC呢
楼主的jar包是2.0 不是spring2.5,2.5的新特性估计还不是太多人使用。 |
|
返回顶楼 | |
发表时间:2009-04-20
2.0 和 2.5 有什么区别没 ?
|
|
返回顶楼 | |
发表时间:2009-04-21
caipanjin 写道 楼主既然用Spring 2.5,为什么不用一下Annotation方式的IoC呢
annotation虽然好用,但是也要改代碼。 |
|
返回顶楼 | |
发表时间:2009-04-21
话说这个应该算不上企业应用吧。。。
PS。听说图书馆的管理系统是COBOL派一直控制着。。。嗯嗯。 |
|
返回顶楼 | |