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 }

 

posted @ 2015-12-26 16:05  Expresso  阅读(3512)  评论(2编辑  收藏  举报