entity bean的作用是将与数据库交互的过程封装成对象,在servelet编写的过程中,只需要会写java,不必考虑与数据库交互细节。

实体类:

基本与数据库的表相对应,表示一个实在的对象。

例子:User类:

成员变量:私有属性

方法实现的功能:获取属性(可自动生成)、修改属性(可自动生成)

 package entity;
public class User { //定义private属性。
private String username;
private String password;
private String realname;
private int userType;
private int sex; public User() {
super();
} //user构造函数,创建一个新user对象
public User(String username, String password, String realname, int userType,
int sex) {
super();
this.username = username;
this.password = password;
this.realname = realname;
this.userType = userType;
this.sex = sex;
} //获取属性
public String getUsername() {
return username;
} //修改属性
public void setUsername(String usrname) {
this.username = usrname;
} //获取属性
public String getPassword() {
return password;
} //修改属性
public void setPassword(String password) {
this.password = password;
} //获取属性
public String getRealname() {
return realname;
} //修改属性
public void setRealname(String realname) {
this.realname = realname;
} //获取属性
public int getUserType() {
return userType;
} //修改属性
public void setUserType(int userType) {
this.userType = userType;
} //获取属性
public int getSex() {
return sex;
} //修改属性
public void setSex(int sex) {
this.sex = sex;
} }

管理类:

成员变量: 主键-对象 对应的哈希表,表示一个结果集。

方法:每个方法与一个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类

 package entity;

 import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap; import db.DBBean; public class UserMgr { private HashMap<String, User> userList; public UserMgr() {
super();
} /**
* 得到所有用户的列表
*
* @return
*/ //查询:传入查询条件,返回一个对象结果集。(如查询所有用户)
public HashMap getUserList() {
HashMap userList = new HashMap();
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
User user = null;
try {
conn = DBBean.getConnection();
String sql = "select * from Table_user";
stmt = conn.createStatement();
rset = stmt.executeQuery(sql);
while (rset.next()) {
user = new User(rset.getString("username"), "888888",
rset.getString("realname"), rset.getInt("userType"),
rset.getInt("sex")); userList.put(rset.getString("username"), user);
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace(); } finally {
try {
rset.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return userList;
} //插入:传入user对象,插入user对象的所有信息。
//因为数据库中主键不能重复,因此可能插入失败。(必须为新用户)
public int addUser(User newUser) {
int result = 0; //
if (findUser(newUser)) {
result = 1; //
} else {
String sql = "insert into Table_user(username,password,realname,userType,sex)values('"
+ newUser.getUsername()
+ "','"
+ newUser.getPassword()
+ "','"
+ newUser.getRealname()
+ "','"
+ newUser.getUserType() + "','" + newUser.getSex() + "')"; if (DBBean.update(sql)) {
result = 2; //
}
}
return result;
} public boolean findUser(User user) {
boolean result = false;
String sql = "select * from Table_user where username=('"
+ user.getUsername() + "')";
result = DBBean.hasRecord(sql);
return result;
} //删除:传入删除条件,传出删除是否成功信息
public boolean deleteUser(String username) {
boolean result = false;
String sql = "delete from Table_user where username=('" + username
+ "')";
result = DBBean.delete(sql);
System.out.println("delete user:" + sql);
return result;
} //查询:如果是通过主键找唯一对象,则返回对象。(如通过user_id找唯一用户)
//判断:本函数也可用来判断是否已经存在此对象。
public User getUser(String username) {
String sql = "select * from Table_user where username=('" + username
+ "')";
User user = null;
Connection conn = null;
Statement stmt = null;
ResultSet rset = null; try {
conn = DBBean.getConnection();
stmt = conn.createStatement();
rset = stmt.executeQuery(sql);
int i = 0;
while (rset.next()) {
user = new User(rset.getString("username"),
rset.getString("password"), rset.getString("realname"),
rset.getInt("userType"), rset.getInt("sex")); } } catch (SQLException e) {
e.printStackTrace(); } finally {
DBBean.clean(conn, stmt, rset);
}
return user;
} public int editUser(User user) {
int result = 1;
String sql = "update Table_user set username ='" + user.getUsername()
+ "',realname='" + user.getRealname() + "',userType='"
+ user.getUserType() + "' " + "where username=('"
+ user.getUsername() + "')";
//System.out.println("edit user:" + sql);
if (DBBean.update(sql)) {
result = 2;
}
return result;
} //判断:结果集是否为空,从而判断是否满足给定条件。
public int verifyUser(String username, String password) {
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
int result = -1;// 用户名密码不对
try {
conn = DBBean.getConnection();
String sql = "select * from table_user where username='" + username
+ "' and password='" + password + "'";
stmt = conn.createStatement();
rset = stmt.executeQuery(sql);
if (rset.next()) {
result = rset.getInt("userType");
System.out.println("user type: " + result);
}
} catch (SQLException e) {
System.out.println("SQLException inside verify user");
e.printStackTrace(); } finally {
try {
rset.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
} }

javaWeb开发中entityBean的习惯用法的更多相关文章

  1. Javaweb开发中URL路径的使用

    看到博客园孤傲苍狼的web系列文章中有关于URL路径的使用文章后,感觉自己对URL的使用清楚了很多,自己再对着动手写一遍以加深记忆. JavaWeb开发中常看到URL以"/"开头, ...

  2. 【详细】总结JavaWeb开发中SSH框架开发问题(用心总结,不容错过)

    在做JavaWeb的SSH框架开发的时候,遇到过很多的细节问题,这里大概记录下 我使用的IDE是Eclipse(老版本)三大框架:Spring4.Struts2.Hibernate5 1.web.xm ...

  3. JavaWeb开发中的分层思想(一)

    JavaWeb开发分层思想(一) 一.认识DAO.Service.Controller层 DAO(Data Access Object) 1.直接看英文意思就是"数据访问对象",也 ...

  4. javaWeb开发中的中文编码问题

    常规解决乱码问题的方法是: a.把所有的jsp页面的charset设置为UTF-8.   b.添加过滤器,在filter内调用request.setCharacterEncoding("ut ...

  5. javaweb开发中的常见错误

    Javaweb中的最常见错误及其解决方法 1.200:表示成功处理业务. 2.400 请求出错: 由于语法格式有误,服务器无法理解此请求.不作修改,客户程序就 无法重复此请求. 解决办法:,遇到400 ...

  6. javaWeb开发中关于eclipse等ide重新部署或重启项目等原因造成上传文件丢失问题解决方案

    在开发项目时,有时候需要用到上传功能,比如头像上传等,其文件会保存到服务器中.但是我发现在用eclipse做项目的过程中,每次重新部署项目,原来上传的文件就会丢失. 其原因是因为每次项目修改后,ecl ...

  7. Java开发中的高频Collections用法总结与Java平台实现源代码查看方式

    一生二,二生三,三生万物,基础永远是一个计算机人的立身之本,相信看到这篇文章的人一般都知道数据结构这门课程,要不也不会找到我的这篇文章.数据结构这门课程的分析奠定了工程师对各种平台中的容器类,集合类的 ...

  8. JavaWeb开发中采用FreeMarker生成Excel表格

            最近做了一个需求,要求导出一个采购合同的Excel表格,这个表格样式比较多.由于是合同,这个Excel表格里面有好多格式要求,比如结尾处签字那部分就有格式要求.这里介绍种采用FreeM ...

  9. Javaweb开发中关于不同地方出现的绝对路径和相对路径

    1.转发和包含路径 a)以“/”开头:相对当前项目路径,即默认为http://localhost:8080/项目名/ b)不以“/”开头:相对当前Servlet路径. eg:在Aservlet中写“B ...

随机推荐

  1. MyBatis参数条件查询传入的值为0时的判断

    MyBatis条件查询对字段判断是否为空一般为: <if test="testValue!=null and testValue != ''"> and test_va ...

  2. c++项目经验分享

    1.C++的const比C语言#define更好的原因? 首先,它能够明确指定类型,有类型检查功能. 其次,可以使用C++的作用域规则将定义限制在特定的函数[常函数]或文件中. 第三,可以将const ...

  3. Python之路【第十九篇】:前端CSS

    CSS 一.CSS概述 CSS是Cascading Style Sheets的简称,中文称为层叠式样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离. 学CSS后我们需要掌握的技能: 1. ...

  4. STVD生成hex,bin,显示ram&flash的使用情况

    前言: 虽然stvd免费,但使用起来并不令人满意,不能自动补全,界面丑陋,设置繁琐,最难受的是不会自动输出ram和flash的使用情况.当然方法还是有的,下面就讲讲我是怎么实现的.个人水平有限,如有错 ...

  5. 使用Nginx的X-Accel-Redirect实现大文件下载

    在实现文件下载功能时通常有以下几种方式: 1.直接给出下载地址,例如http://****.com/test/test.rar,这种是最直接的方式,任何人都可以下载,无法控制用户的权限. 2.验证权限 ...

  6. 如何在CentOS / RHEL 7上启用IPv6

    默认情况下,在RHEL / CenOS 7系统上启用IPv6.因此,如果故意在系统上禁用IPv6,则可以通过以下任一方法重新启用它. 1.在内核模块中启用IPv6(需要重启)2.使用sysctl设置启 ...

  7. 解决Ajax前台中文传到后台出现中文乱码

    遇到的问题是: 前台利用Ajax, get方式向后台发送中文数据出现乱码. 解决办法是前台两次编码, 后台一次解码即可. 前台jsp文件 1 var text = "张三"; 3 ...

  8. Python基础知识(四)

    Python基础知识(四) 一丶列表 定义格式: 是一个容器,由 [ ]表示,元素与元素之间用逗号隔开. 如:name=["张三","李四"] 作用: 存储任意 ...

  9. Matlab适配器模式

    适配器模式是连接两个不兼容接口的桥梁,主要分为三种:类适配器.对象适配器以及接口适配器,本文根据https://blog.csdn.net/u012359453/article/details/791 ...

  10. 两种方法实现在HTML页面加载完毕后运行JS

    JS默认方法: <script type=”text/javascript”> window.onload=function (){ /*代码区域*/ } </script> ...