开发者社区> 咕噜不爱猫> 正文

Struts+iBatis+Spring+mysql整合开发

简介: 转载请注明:http://www.cnblogs.com/tiantianbyconan/archive/2013/03/03/2941554.html 本文使用Struts+iBatis+Spring三层框架开实现对user表的CRUD。
+关注继续查看

转载请注明: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;
    }

    @Override
    public String execute() throws Exception {
        userService.registerUser(user);
        System.out.println("数据已经插入");
        return null;
    }
}

 

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23639 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
22502 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
20962 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
14858 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
36549 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
17438 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
14928 0
+关注
咕噜不爱猫
博客:http://www.cnblogs.com/tiantianbyconan/ Github:https://github.com/wangjiegulu
134
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载