Struts+iBatis+Spring+mysql整合开发
转载请注明:http://www.cnblogs.com/tiantianbyconan/archive/2013/03/03/2941554.html
本文使用Struts+iBatis+Spring三层框架开实现对user表的CRUD。
分层如下:
iBatis配置文件(sqlMapConfig.xml):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig><settings cacheModelsEnabled="true" enhancementEnabled="true"lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32"maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /><sqlMap resource="com/tiantian/ibatis/model/user.xml" /></sqlMapConfig>
struts.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><package name="ibatis_test" extends="struts-default"><!-- 注册User action --><action name="registerUser" class="registerUserAction"></action><!-- 删除User action --><action name="deleteUser" class="deleteUserAction"></action><!-- 更新User action --><action name="updateUser" class="updateUserAction"></action><!-- 查询所有User action --><action name="findAllUsers" class="findAllUsersAction"></action><!-- 查询指定id的User action --><action name="findUserById" class="findUserByIdAction"></action><!-- 模糊查询User action --><action name="findUsersBykeyword" class="findUsersBykeywordAction"></action></package></struts>
user.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><!-- 为Student类取个别名 --><typeAlias alias="UserAlias" type="com.tiantian.ibatis.model.User"/><!-- 配置表和实体Bean之间的映射关系 --> <resultMap id="userMap" class="com.tiantian.ibatis.model.User"> <result property="id" column="id"/><result property="username" column="username"/><result property="password" column="password"/><result property="age" column="age"/></resultMap><!-- 添加数据 --><insert id="registerUser" parameterClass="UserAlias">INSERT INTO user VALUES (NULL, #username#, #password#, #age#);</insert><!-- 删除指定id的数据 --><delete id="deleteUser" parameterClass="UserAlias">DELETE FROM user WHERE id = #id#;</delete><!-- 修改指定id的数据 --><update id="updateUser" parameterClass="UserAlias">UPDATE user SET username = #username#, password = #password#, age = #age#WHERE id = #id#;</update><!-- 查询所有User信息 --><select id="findAllUsers" resultMap="userMap">SELECT * FROM user;</select><!-- 查询指定id的User信息 --><select id="findUserById" resultMap="userMap">SELECT * FROM user WHERE id = #id#;</select><!-- 模糊查询 --><select id="findUsersByKeyword" resultMap="userMap">SELECT * FROM user WHERE username LIKE '%$keyword$%';</select></sqlMap>
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" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.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/test" /><property name="username" value="root" /><property name="password" value="XXXX" /><property name="validationQuery" value="select user.id from user"></property><property name="maxIdle" value="15"></property><property name="maxActive" value="15"></property><property name="maxWait" value="1000"></property></bean><bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="configLocation" value="classpath:sqlMapConfig.xml"></property><property name="dataSource" ref="dataSource"></property></bean><!-- 事务管理 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><!-- 声明式事务管理 --><bean id="baseTransactionProxy"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"abstract="true"><property name="transactionManager" ref="transactionManager"></property><property name="transactionAttributes"><props><!-- 表示设置事务属性所有以"find"和"get"开头的方法:- PROPAGATION_REQUIRED: 当前存在事务则使用存在的事务,如果不存在,则开启一个新的事务- readOnly:表示只读的事务--><prop key="find*">PROPAGATION_REQUIRED,readOnly</prop><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean><!-- *****************************以上一般只需修改数据库配置******************************** --><!-- ********************************************************************* --><!-- *******************************DAO*********************************** --><!-- ********************************************************************* --><!-- DAO、Service一般都配置成singleton(可以不写,因为默认是singleton) --><bean id="userDao" class="com.tiantian.ibatis.dao.impl.UserDaoImpl" scope="singleton"><property name="sqlMapClient" ref="sqlMapClient"></property></bean><!-- ************************************************************************* --><!-- *******************************Service*********************************** --><!-- ************************************************************************* --><!-- Service,没有事务功能 --><bean id="userServiceTarget" class="com.tiantian.ibatis.service.impl.UserServiceImpl"><property name="userDao" ref="userDao"></property></bean><!-- Service的代理,目的是为Service添加事务的功能 --><bean id="userService" parent="baseTransactionProxy"><property name="target" ref="userServiceTarget"></property></bean><!-- ************************************************************************ --><!-- *******************************Action*********************************** --><!-- ************************************************************************ --><!-- Action一般都配置成prototype(必须要写!) --> <!-- **User Actions** --><bean id="registerUserAction" class="com.tiantian.ibatis.action.user.RegisterUserAction" scope="prototype"><property name="userService" ref="userService"></property></bean><bean id="deleteUserAction" class="com.tiantian.ibatis.action.user.DeleteUserAction" scope="prototype"><property name="userService" ref="userService"></property></bean><bean id="updateUserAction" class="com.tiantian.ibatis.action.user.UpdateUserAction" scope="prototype"><property name="userService" ref="userService"></property></bean><bean id="findAllUsersAction" class="com.tiantian.ibatis.action.user.FindAllUsersAction"><property name="userService" ref="userService"></property></bean><bean id="findUserByIdAction" class="com.tiantian.ibatis.action.user.FindUserByIdAction"><property name="userService" ref="userService"></property></bean><bean id="findUsersBykeywordAction" class="com.tiantian.ibatis.action.user.FindUsersByKeywordAction"><property name="userService" ref="userService"></property></bean></beans>
DAO接口:
/*** @author wangjie* @version 创建时间:2013-3-1 下午5:44:21*/ public interface UserDao {public void registerUser(User user);public boolean deleteUser(User user);public boolean updateUser(User user);public List<User> findAllUsers();public User findUserById(User user);public List<User> findUsersByKeyword(String keyword); }
DAO实现类(执行各个Action所需的数据库查询操作):
package com.tiantian.ibatis.dao.impl;import java.util.List;import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;import com.tiantian.ibatis.dao.UserDao; import com.tiantian.ibatis.model.User;/*** @author wangjie* @version 创建时间:2013-3-1 下午6:09:53*/ public class UserDaoImpl extends SqlMapClientDaoSupport implements UserDao{public void registerUser(User user) {getSqlMapClientTemplate().insert("registerUser", user);}public boolean deleteUser(User user) {boolean result = false;int effectedRow = getSqlMapClientTemplate().delete("deleteUser", user);System.out.println("delete effectedRow: " + effectedRow);result = effectedRow > 0 ? true : false;return result;}public boolean updateUser(User user) {boolean result = false;int effectedRow = getSqlMapClientTemplate().update("updateUser", user);System.out.println("update effectedRow: " + effectedRow);result = effectedRow > 0 ? true : false;return result;}public List<User> findAllUsers() {return (List<User>)getSqlMapClientTemplate().queryForList("findAllUsers");}public User findUserById(User user) {return (User) getSqlMapClientTemplate().queryForObject("findUserById", user);}public List<User> findUsersByKeyword(String keyword) {return (List<User>)getSqlMapClientTemplate().queryForList("findUsersByKeyword", keyword);}}
Action类(以RegisterUserAction为例):
package com.tiantian.ibatis.action.user;import com.opensymphony.xwork2.ActionSupport; import com.tiantian.ibatis.model.User; import com.tiantian.ibatis.service.UserService; import com.tiantian.ibatis.service.impl.UserServiceImpl;/*** @author wangjie* @version 创建时间:2013-3-2 下午11:26:18*/ public class RegisterUserAction extends ActionSupport{private UserService userService;private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public UserService getUserService() {return userService;}public void setUserService(UserService userService) {this.userService = userService;}@Overridepublic String execute() throws Exception {userService.registerUser(user);System.out.println("数据已经插入");return null;} }
转载于:https://www.cnblogs.com/tiantianbyconan/archive/2013/03/03/2941554.html
Struts+iBatis+Spring+mysql整合开发相关推荐
- Eclipse下搭建struts、spring、hibernate开发环境
开发环境的搭建,Myeclipse 下搭建 struts+spring+hibernate 开发环境:记得刚学struts.Spring.hibernate三大框架时就为这些基本环境的搭建发愁,那是使 ...
- struts2+ibatis+spring框架整合(二)
MyBatis3.1.1+Spring3.1.2+Struts2.3.4.1框架整合 先来看目录结构 来看配置文件 applicationContext.xml <?xml version=&q ...
- (八) shiro + spring + mybatis整合开发
1 前言 : shiro代码参考java1234网站<一头扎进shiro>视频敲出来的,原理这些请参视频 , 点击 下载源码 点击 下载数据库 2 项目结构图 3 代码 UserCont ...
- spring mysql整合_springboot mybatis mysql 整合
1.pom文件配置 mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test ...
- JSP + Struts + Hibernate + Spring+MySQL+Myeclipse实现固定资产管理系统
导读:随着计算机信息技术的发展以及对资产.设备的管理科学化.合理化的高要求,利用计算机实现设备及资产的信息化管理已经显得非常重要.固定资产管理系统是一个单位不可缺少的部分.但一直以来人们使用传统的人工 ...
- 用Spring更好地处理Struts动作三种整合
http://java.chinaitlab.com/Spring/525537_2.html 为什么 Spring 这么了不起? Spring 的创立者 Rod Johnson 以一种批判的眼光看待 ...
- javaee互联网轻量级框架整合开发_整合MyBatis的关键点及快速入门
对于从事Web应用开发人员,Java EE平台如今已经成为电信.金融.电子商务.保险.证券等各行业的大型应用系统的首选开发平台.在企业级应用的开发选择上,.NET已趋式微,PHP通常只用于开发一些企业 ...
- 基于struts+spring+ibatis的轻量级J2EE开发
基于struts+spring+ibatis的轻量级J2EE开发 内容: 1. 前言 2. JpetStore简述 3. JPetStore的改造 4. 结束语 参考资料 关于作者 对本文的评价 订阅 ...
- 框架学习之Spring 第五节 SSH整合开发[Spring2.5+Hibernate3.3+Struts2]
1.首先整合Spring和Hibernate ①引入jar包: hibernate核心安装包下的: hibernate3.jar lib\required\*.jar lib\optional\ehc ...
最新文章
- CSDN 居然免费送会员?程序员们快来领!
- hadoop 023.0与hadoop 1.0 io.serializable分析
- 用单链表实现栈及操作
- Firetruck(DFS+回溯)
- 二进制状态压缩相关操作
- 使用Nginx搭建图片服务器(windows7)
- matlab和c 性能,性能权衡 – 什么时候是MATLAB更好/慢于C/C++
- 产品级垃圾文本分类器
- java.lang.IllegalArgumentException: No enum constant org.apache.ws.commons.schema.XmlSchemaForm.
- CIF/4CIF/QCIF/D1
- Selenium + C# 实现模拟百度贴吧签到 1
- 遥控汽车的编程c语言,智能小车循迹、避障、红外遥控C语言代码.docx
- Deep Representation Learning for Trajectory Similarity Computation
- 2011年国内手机市场如何推演?
- Select下拉框支持搜索,jq插件,使用超级简单!
- [Swift]LeetCode38. 报数 | Count and Say
- 「3.0」一个人开发一个App,小程序从0到1,删减添加
- php周计划表_PHPOA日程安排系统,建立井然有序的工作计划
- C# 获取当前时间整点时间及n个小时前的整点时间
- Java使用程序ZHConverter把工程内所有文件的简体字转换为繁体字
热门文章
- Makefile模板的继续改进
- shell脚本执行命令错误处理
- 【Flink】FLink PipelineExecutorFactory 基于工厂模式的任务提交与SPI机制
- Flink】FLink 通讯组件 RPC
- 【ElasticSearch】 ElasticSearch 读取 流程
- 【elasticsearch】ES 相似文章检测
- 【Elasticsearch】Elasticsearch Span Query跨度查询
- 【Kafka】Kafka 奇怪问题之无法用Java 客户端消费
- 95-190-540-源码-window-清除器(Evictors)-TimeEvitor简介
- 【Docker】docker设置固定ip地址