Struts2.0+ibatis2.3完美整合實例之映射淺析
Struts2.0+ibatis2.3完美整合實例如何實現呢?讓我們開始具體的步驟:
Struts2.0+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;
- }
- }
Struts2.0+ibatis2.3完美整合實例二、接下來我們把映射的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的都很清楚了,在這里我就不詳細說明了,呵呵!
Struts2.0+ibatis2.3完美整合實例三、接下來我們就寫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
Struts2.0+ibatis2.3完美整合實例之映射實現就向你介紹到這里,希望對你有所幫助。
【編輯推薦】