博客概要
昨晚和几个搞技术的室友讨论问题,谈到了实体类,就问自己“实体类有啥作用?”、“实体类是干啥的?”、“什么是实体类?”…一直到入睡前,想了很多,从之前做过的项目出发,脑补了流程,终于在床上想的差不多了,然后…失眠了一小会儿,果然夜晚的时光最美妙= =早上醒来,看了会儿书,吃了早餐后,就赶紧来写博客啦~
代码栗子
要注意的是,博主在这里放置的代码是不完整的,仅供理解范例使用,如需要完整一点的代码,请参考博主以下博文内容:
【1】JDBC——增删查改
【2】JDBC——(从复杂到简单)连接使用数据库的多种实现方法
【3】面向百度
实体类(User)
private int uid;
private String username;
private String password;
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public User() {
}
public User(int uid, String username, String password) {
this.uid = uid;
this.username = username;
this.password = password;
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
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;
}
数据持久层-实现(UserDaoImpl)
/**
* 新增
* @param user
* @return
*/
@Override
public boolean doAddU(User user) {
try {
conn = db.getConn();
String sql = "insert into tb_ws_user values(null,?,?)";
System.out.print("请输入用户名称:");
String username = in.next();
System.out.print("请输入用户密码:");
String password = in.next();
User users = new User(username,password);
Object[] params = {user.getUsername(), user.getPassword()};
int i = db.executeUpdate(sql, params);
if (i > 0) {
//新增成功
return true;
} else {
//新增失败
return false;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
db.closeResource(rs, pstm, conn);
}
return false;
}
/**
* id单查
* @param uid
* @return
*/
@Override
public void doFindByIdU(int uid) {
try {
conn = db.getConn();
String sql = "select * from tb_ws_user where uid=?";
System.out.print("请输入用户编号:");
int uid = in.nextInt();
Object[] params = {uid};
rs = db.executeQuery(sql, params);
while (rs.next()) {
System.out.println("*用户编号:" + rs.getInt(1) + ",\t*用户名:" + rs.getString(2) + ",\t*用户密码:" + rs.getString(3));
}
} catch (Exception e) {
e.printStackTrace();
}
}
实体类
概念与作用

由上图可知,直观的来看,实体类就是一个定义了属性,拥有setter、getter、无参构造方法(基本必备)、toString方法、有参方法(看需求)的一个类。


由例图可知,实体类可以在数据传输过程中对数据进行封装,相当于一个“工具”、“容器”、“载体”,能存储、传输数据,能管理数据,使用方法对数据进行操作。
数据流程

使用经验
现在回想,在使用过程中,其实实体类和数据库-表是一一对应的:
数据库-表 | 使用实体类 |
---|---|
一张表 | 一个类 |
一条数据、一行数据 | 一个对象 |
一行中的一列 | 一个属性 |
… | … |
所以得出以下几点经验:
- 实体类名,尽量和数据库中的表名一一对应
- 实体类中的属性对应数据库表中的字段,相关的命名最好也一一对应
- 实体类内方法主要有,setter、getter方法,用于设置、获取数据
- 实体类属性一般为private类型,方法为public类型
- 实体类应该有,无参、有参构造方法
总结
“回溯”这种原本以为已经用的“滚瓜烂熟”的技术点的时候,也还是能学到不少东西,基础还需要继续扎实…
