转载请注明: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整合开发相关推荐

  1. Eclipse下搭建struts、spring、hibernate开发环境

    开发环境的搭建,Myeclipse 下搭建 struts+spring+hibernate 开发环境:记得刚学struts.Spring.hibernate三大框架时就为这些基本环境的搭建发愁,那是使 ...

  2. struts2+ibatis+spring框架整合(二)

    MyBatis3.1.1+Spring3.1.2+Struts2.3.4.1框架整合 先来看目录结构 来看配置文件 applicationContext.xml <?xml version=&q ...

  3. (八) shiro + spring + mybatis整合开发

    1 前言 :  shiro代码参考java1234网站<一头扎进shiro>视频敲出来的,原理这些请参视频 , 点击 下载源码 点击 下载数据库 2 项目结构图 3 代码 UserCont ...

  4. spring mysql整合_springboot mybatis mysql 整合

    1.pom文件配置 mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test ...

  5. JSP + Struts + Hibernate + Spring+MySQL+Myeclipse实现固定资产管理系统

    导读:随着计算机信息技术的发展以及对资产.设备的管理科学化.合理化的高要求,利用计算机实现设备及资产的信息化管理已经显得非常重要.固定资产管理系统是一个单位不可缺少的部分.但一直以来人们使用传统的人工 ...

  6. 用Spring更好地处理Struts动作三种整合

    http://java.chinaitlab.com/Spring/525537_2.html 为什么 Spring 这么了不起? Spring 的创立者 Rod Johnson 以一种批判的眼光看待 ...

  7. javaee互联网轻量级框架整合开发_整合MyBatis的关键点及快速入门

    对于从事Web应用开发人员,Java EE平台如今已经成为电信.金融.电子商务.保险.证券等各行业的大型应用系统的首选开发平台.在企业级应用的开发选择上,.NET已趋式微,PHP通常只用于开发一些企业 ...

  8. 基于struts+spring+ibatis的轻量级J2EE开发

    基于struts+spring+ibatis的轻量级J2EE开发 内容: 1. 前言 2. JpetStore简述 3. JPetStore的改造 4. 结束语 参考资料 关于作者 对本文的评价 订阅 ...

  9. 框架学习之Spring 第五节 SSH整合开发[Spring2.5+Hibernate3.3+Struts2]

    1.首先整合Spring和Hibernate ①引入jar包: hibernate核心安装包下的: hibernate3.jar lib\required\*.jar lib\optional\ehc ...

最新文章

  1. CSDN 居然免费送会员?程序员们快来领!
  2. hadoop 023.0与hadoop 1.0 io.serializable分析
  3. 用单链表实现栈及操作
  4. Firetruck(DFS+回溯)
  5. 二进制状态压缩相关操作
  6. 使用Nginx搭建图片服务器(windows7)
  7. matlab和c 性能,性能权衡 – 什么时候是MATLAB更好/慢于C/C++
  8. 产品级垃圾文本分类器
  9. java.lang.IllegalArgumentException: No enum constant org.apache.ws.commons.schema.XmlSchemaForm.
  10. CIF/4CIF/QCIF/D1
  11. Selenium + C# 实现模拟百度贴吧签到 1
  12. 遥控汽车的编程c语言,智能小车循迹、避障、红外遥控C语言代码.docx
  13. Deep Representation Learning for Trajectory Similarity Computation
  14. 2011年国内手机市场如何推演?
  15. Select下拉框支持搜索,jq插件,使用超级简单!
  16. [Swift]LeetCode38. 报数 | Count and Say
  17. 「3.0」一个人开发一个App,小程序从0到1,删减添加
  18. php周计划表_PHPOA日程安排系统,建立井然有序的工作计划
  19. C# 获取当前时间整点时间及n个小时前的整点时间
  20. Java使用程序ZHConverter把工程内所有文件的简体字转换为繁体字

热门文章

  1. Makefile模板的继续改进
  2. shell脚本执行命令错误处理
  3. 【Flink】FLink PipelineExecutorFactory 基于工厂模式的任务提交与SPI机制
  4. Flink】FLink 通讯组件 RPC
  5. 【ElasticSearch】 ElasticSearch 读取 流程
  6. 【elasticsearch】ES 相似文章检测
  7. 【Elasticsearch】Elasticsearch Span Query跨度查询
  8. 【Kafka】Kafka 奇怪问题之无法用Java 客户端消费
  9. 95-190-540-源码-window-清除器(Evictors)-TimeEvitor简介
  10. 【Docker】docker设置固定ip地址