javaWeb開發中entityBean的習慣用法


entity bean的作用是將與數據庫交互的過程封裝成對象,在servelet編寫的過程中,只需要會寫java,不必考慮與數據庫交互細節。

實體類:

基本與數據庫的表相對應,表示一個實在的對象。

 

例子:User類:

成員變量:私有屬性

方法實現的功能:獲取屬性(可自動生成)、修改屬性(可自動生成)

 

 1 package entity;
 2 public class User {
 3 
 4 //定義private屬性。
 5     private String username;
 6     private String password;
 7     private String  realname;
 8     private int userType;
 9     private int sex;
10     
11     public User() {
12         super();
13     }
14 
15 //user構造函數,創建一個新user對象
16     public User(String username, String password, String realname, int userType,
17             int sex) {
18         super();
19         this.username = username;
20         this.password = password;
21         this.realname = realname;
22         this.userType = userType;
23         this.sex = sex;
24     }
25 
26 //獲取屬性
27     public String getUsername() {
28         return username;
29     }
30 
31 //修改屬性
32     public void setUsername(String usrname) {
33         this.username = usrname;
34     }
35 
36 //獲取屬性
37     public String getPassword() {
38         return password;
39     }
40 
41 //修改屬性
42     public void setPassword(String password) {
43         this.password = password;
44     }
45 
46 //獲取屬性
47     public String getRealname() {
48         return realname;
49     }
50 
51 
52 //修改屬性
53     public void setRealname(String realname) {
54         this.realname = realname;
55     }
56 
57 //獲取屬性
58     public int getUserType() {
59         return userType;
60     }
61 
62 //修改屬性
63     public void setUserType(int userType) {
64         this.userType = userType;
65     }
66 
67 //獲取屬性
68     public int getSex() {
69         return sex;
70     }
71 
72 //修改屬性
73     public void setSex(int sex) {
74         this.sex = sex;
75     }
76     
77 }

管理類:

成員變量: 主鍵-對象 對應的哈希表,表示一個結果集。

方法:每個方法與一個sql語句相對應

因此new一個管理類的對象,可用於得到某條查詢的結果集。

 

常見方法:

查詢(select)語句:

JDBCResultSet rset = stmt.executeQuery(sql);

1、傳入查詢條件,返回一個對象結果集。(如查詢所有用戶)

2、如果是通過主鍵找唯一對象,則返回對象。(如通過user_id找唯一用戶)

本函數也可用來判斷是否已經存在此對象。

判斷:JDBCbool result = DBBean.hasRecord(sql);

3、判斷結果集是否為空,從而判斷是否滿足給定條件。

 

插入(insert)語句:

JDBCbool success=DBBean.update(sql);

1、傳入user對象,插入user對象的所有信息。

因為數據庫中主鍵不能重復,因此可能插入失敗。(必須為新用戶)

 

更新(update)語句:

JDBCbool success = DBBean.update(sql);

1、傳入user對象,傳出是否更新成功信息。

要更新記錄必須在數據庫有原始記錄,否則會更新失敗。

 

刪除(delete)語句:

JDBCbool success = DBBean.delete(sql);

1、傳入刪除條件,傳出刪除是否成功信息

 

例子:UserMgr類

  1 package entity;
  2 
  3 import java.sql.Connection;
  4 import java.sql.ResultSet;
  5 import java.sql.SQLException;
  6 import java.sql.Statement;
  7 import java.util.HashMap;
  8 
  9 import db.DBBean;
 10 
 11 public class UserMgr {
 12     
 13     private HashMap<String, User> userList;
 14     
 15     public UserMgr() {
 16         super();
 17     }
 18     
 19     /**
 20      * 得到所有用戶的列表
 21      * 
 22      * @return
 23      */
 24     
 25 
 26 //查詢:傳入查詢條件,返回一個對象結果集。(如查詢所有用戶)
 27     public HashMap getUserList() {
 28         HashMap userList = new HashMap();
 29         Connection conn = null;
 30         Statement stmt = null;
 31         ResultSet rset = null;
 32         User user = null;
 33         try {
 34             conn = DBBean.getConnection();
 35             String sql = "select * from Table_user";
 36             stmt = conn.createStatement();
 37             rset = stmt.executeQuery(sql);
 38             while (rset.next()) {
 39                 user = new User(rset.getString("username"), "888888",
 40                         rset.getString("realname"), rset.getInt("userType"),
 41                         rset.getInt("sex"));
 42 
 43                 userList.put(rset.getString("username"), user);
 44             }
 45 
 46         } catch (SQLException e) {
 47             // TODO Auto-generated catch block
 48             e.printStackTrace();
 49 
 50         } finally {
 51             try {
 52                 rset.close();
 53                 stmt.close();
 54                 conn.close();
 55             } catch (Exception e) {
 56                 e.printStackTrace();
 57             }
 58         }
 59         return userList;
 60     }
 61 
 62     
 63     
 64 
 65 
 66 //插入:傳入user對象,插入user對象的所有信息。
 67 //因為數據庫中主鍵不能重復,因此可能插入失敗。(必須為新用戶)
 68     public int addUser(User newUser) {
 69         int result = 0; //
 70         if (findUser(newUser)) {
 71             result = 1; //
 72         } else {
 73             String sql = "insert into Table_user(username,password,realname,userType,sex)values('"
 74                     + newUser.getUsername()
 75                     + "','"
 76                     + newUser.getPassword()
 77                     + "','"
 78                     + newUser.getRealname()
 79                     + "','"
 80                     + newUser.getUserType() + "','" + newUser.getSex() + "')";
 81 
 82             if (DBBean.update(sql)) {
 83                 result = 2; //
 84             }
 85         }
 86         return result;
 87     }
 88 
 89     
 90 
 91     public boolean findUser(User user) {
 92         boolean result = false;
 93         String sql = "select * from Table_user where username=('"
 94                 + user.getUsername() + "')";
 95         result = DBBean.hasRecord(sql);
 96         return result;
 97     }
 98 
 99 
100 //刪除:傳入刪除條件,傳出刪除是否成功信息
101     public boolean deleteUser(String username) {
102         boolean result = false;
103         String sql = "delete from Table_user where username=('" + username
104                 + "')";
105         result = DBBean.delete(sql);
106         System.out.println("delete user:" + sql);
107         return result;
108     }
109 
110 
111 //查詢:如果是通過主鍵找唯一對象,則返回對象。(如通過user_id找唯一用戶)
112 //判斷:本函數也可用來判斷是否已經存在此對象。
113     public User getUser(String username) {
114         String sql = "select * from Table_user where username=('" + username
115                 + "')";
116         User user = null;
117         Connection conn = null;
118         Statement stmt = null;
119         ResultSet rset = null;
120 
121         try {
122             conn = DBBean.getConnection();
123             stmt = conn.createStatement();
124             rset = stmt.executeQuery(sql);
125             int i = 0;
126             while (rset.next()) {
127                 user = new User(rset.getString("username"),
128                         rset.getString("password"), rset.getString("realname"),
129                         rset.getInt("userType"), rset.getInt("sex"));
130 
131             }
132 
133         } catch (SQLException e) {
134             e.printStackTrace();
135 
136         } finally {
137             DBBean.clean(conn, stmt, rset);
138         }
139         return user;
140     }
141 
142 
143 
144 
145     public int editUser(User user) {
146         int result = 1;
147         String sql = "update Table_user set username ='" + user.getUsername()
148                 + "',realname='" + user.getRealname() + "',userType='"
149                 + user.getUserType() + "' " + "where username=('"
150                 + user.getUsername() + "')";
151         //System.out.println("edit user:" + sql);
152         if (DBBean.update(sql)) {
153             result = 2; 
154         }
155         return result;
156     }
157 
158 
159 //判斷:結果集是否為空,從而判斷是否滿足給定條件。
160     public int verifyUser(String username, String password) {
161         Connection conn = null;
162         Statement stmt = null;
163         ResultSet rset = null;
164         int result = -1;// 用戶名密碼不對
165         try {
166             conn = DBBean.getConnection();
167             String sql = "select * from table_user where username='" + username
168                     + "' and password='" + password + "'";
169             stmt = conn.createStatement();
170             rset = stmt.executeQuery(sql);
171             if (rset.next()) {
172                 result = rset.getInt("userType");
173                 System.out.println("user type: " + result);
174             }
175         } catch (SQLException e) {
176             System.out.println("SQLException inside verify user");
177             e.printStackTrace();
178 
179         } finally {
180             try {
181                 rset.close();
182                 stmt.close();
183                 conn.close();
184             } catch (Exception e) {
185                 e.printStackTrace();
186             }
187         }
188         return result;
189     }
190 
191 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM