Struts2.0+Springframework2.5+ibatis2.3完美整合用戶登錄及增刪改查演示示例 連載中.(二)

   最近太忙了,上次的這個例子都沒寫完,實在不好意思,今天我們把這個例子繼續接着上次的例子做吧。
   一、我們先把數據庫的表映射出來,即Users.java
   

package org.login.vo;

/**
 * Users Entity Bean
 * 
@author jinlong0
 
*/
public class Users {

    
private Integer id;
    
private String userName;
    
private String password;
        
    
public Integer getId() {
        
return id;
    }

    
public void setId(Integer id) {
        
this.id = id;
    }

    
public String getUserName() {
        
return userName;
    }

    
public void setUserName(String userName) {
        
this.userName = userName;
    }

    
public String getPassword() {
        
return password;
    }

    
public void setPassword(String password) {
        
this.password = password;
    }

    
public Users() {
        
    }

    
public Users(Integer id, String userName, String password) {
        
super();
        
this.id = id;
        
this.userName = userName;
        
this.password = password;
    }
    
}

   二、接下來我們把映射的XML寫出來,即Users.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 namespace="User">
    
<typeAlias alias="user" type="org.login.vo.Users"/>
    
    
<resultMap class="user" id="get-all-user">
        
<result property="id" column="id"/>
        
<result property="userName" column="username"/>
        
<result property="password" column="password"/>
    
</resultMap>
    
    
<select id="checkUser" parameterClass="user" resultClass="user">
        
<![CDATA[
            SELECT id, username, password FROM users WHERE username = #userName# and password = #password#
        
]]>
    
</select>
    
    
<select id="getUserById" parameterClass="java.lang.Integer" resultClass="user">
        
<![CDATA[
            SELECT id, username, password FROM users WHERE id = #id#
        
]]>
    
</select>
    
    
<select id="getAllUser" resultMap="get-all-user">
        
<![CDATA[
            SELECT id, username, password FROM users
        
]]>
    
</select>
    
    
<insert id="insertUser" parameterClass="user">
        
<![CDATA[
            INSERT INTO users (username, password) VALUES (#userName#, #password#)
        
]]>
    
</insert>
    
    
<update id="updateUser" parameterClass="user">
        
<![CDATA[
            UPDATE users SET username=#userName#, password=#password# WHERE id=#id#
        
]]>
    
</update>
    
    
<delete id="deleteUser" parameterClass="java.lang.Integer">
        
<![CDATA[
            DELETE FROM users WHERE id = #id#
        
]]>
    
</delete>
</sqlMap>

   在這裏我們要特別注意的是與Hibernate的xml的區別,在這個映射的xml裏有了所有的數據操作的SQL語句,這也是ibatis的一個特點,它的半自動化,讓開發人員能隨心所欲的,想必學過ibatis的都很清楚了,在這裏我就不詳細說明了,呵呵!
   三、接下來我們就寫DAO層的接口及實現
   接口IUserDAO.java
   

package org.login.dao;

import java.util.List;

import org.login.vo.Users;

public interface IUserDAO {

    List
<Users> getAllUser();
    
    Users getUserById(Integer id);
    
    
boolean isLogin(Users user);
    
    
boolean insertUser(Users user);
    
    
boolean updateUser(Users user);
    
    
boolean deleteUser(Integer id);
}

   實現類:UserDAO.java
   

package org.login.dao.Impl;

import java.sql.SQLException;
import java.util.List;

import org.login.dao.IUserDAO;
import org.login.vo.Users;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import com.ibatis.sqlmap.client.SqlMapClient;

@SuppressWarnings(
"unchecked")
@Service(
"userDAO")
public class UserDAO implements IUserDAO {

    @Autowired(required
=false)
    @Qualifier(
"sqlClient")
    
private SqlMapClient client = null;

    
public SqlMapClient getClient() {
        
return client;
    }

    
public void setClient(SqlMapClient client) {
        
this.client = client;
    }

    @Override
    
public boolean deleteUser(Integer id) {
        
try {
            client.delete(
"deleteUser", id);
            
return true;
        } 
catch (SQLException e) {
            e.printStackTrace();
        }
        
return false;
    }

    @Override
    
public List<Users> getAllUser() {
        List
<Users> list = null;
        
try {
            list 
=  client.queryForList("getAllUser");
        } 
catch (SQLException e) {
            e.printStackTrace();
        }
        
return list;
    }

    @Override
    
public boolean insertUser(Users user) {
        
try {
            client.insert(
"insertUser", user);
            
return true;
        } 
catch (SQLException e) {
            e.printStackTrace();
        }
        
return false;
    }

    @Override
    
public boolean updateUser(Users user) {
        
try {
            client.update(
"updateUser", user);
            
return true;
        } 
catch (SQLException e) {
            e.printStackTrace();
        }
        
return false;
    }

    @Override
    
public boolean isLogin(Users user) {
        
try {
            Users u 
= (Users) client.queryForObject("checkUser", user);
            
if (u != null) {
                
return true;
            }
        } 
catch (SQLException e) {
            e.printStackTrace();
        }
        
return false;
    }

    @Override
    
public Users getUserById(Integer id) {
        Users u 
= null;
        
try {
            u 
= (Users) client.queryForObject("getUserById", id);
        } 
catch (SQLException e) {
            e.printStackTrace();
        }
        
return u;
    }

}

   在這裏,接口和我們前面的Hibernate的例子類同,只是實現類區別有點大了。
   特別應該注意的是Spring2.5中類的注入方式,是用標註方式注入的,即:
   @Service("userDAO") 
   @Autowired(required=false)
   @Qualifier("sqlClient")
   這是我們特別應該注意的,這是標註,詳細說明見Spring2.5的開發手冊。
   這篇就寫到這裏吧,下篇我們將說明服務層及Struts層的實現,如果有興趣研究的朋友可以先下載示例代碼先看下,具體的下載地址如下:

   演示示例下載地址:Struts2.0+Spring2.5.1+ibatis2.3地址:http://download.csdn.net/source/331581

   如果有朋友比較喜歡Hibernate的話,過些時候我會再寫個關於Hibernate的集成,不過大家可以先看一下我以前的兩個關於Hibernate方法的集成示例,下載地址如下:

   

   Struts1.2+Spring1.2+HIbernate3.1整合用戶登錄下載地址:http://download.csdn.net/source/323772

   Struts2.0+Spring2.0+HIbernate3.1整合用戶登錄以及增刪改查完整示例:http://download.csdn.net/source/326113

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章