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)语句:
JDBC:ResultSet rset = stmt.executeQuery(sql);
1、传入查询条件,返回一个对象结果集。(如查询所有用户)
2、如果是通过主键找唯一对象,则返回对象。(如通过user_id找唯一用户)
本函数也可用来判断是否已经存在此对象。
判断:JDBC:bool result = DBBean.hasRecord(sql);
3、判断结果集是否为空,从而判断是否满足给定条件。
插入(insert)语句:
JDBC:bool success=DBBean.update(sql);
1、传入user对象,插入user对象的所有信息。
因为数据库中主键不能重复,因此可能插入失败。(必须为新用户)
更新(update)语句:
JDBC:bool success = DBBean.update(sql);
1、传入user对象,传出是否更新成功信息。
要更新记录必须在数据库有原始记录,否则会更新失败。
删除(delete)语句:
JDBC:bool 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 }