package five.domain;
import java.sql.Date;
public class User {
private int id;
private String name;
private String password;
private Date brithday;
private float monney;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBrithday() {
return brithday;
}
public void setBrithday(Date brithday) {
this.brithday = brithday;
}
public float getMonney() {
return monney;
}
public void setMonney(float monney) {
this.monney = monney;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(int id, String name, String password, Date brithday,
float monney) {
super();
this.id = id;
this.name = name;
this.password = password;
this.brithday = brithday;
this.monney = monney;
}
public User() {
super();
}
public User(String name) {
this.name = name;
}
public String toString() {
return "name = " + this.name +
" id = " + this.id +
" brithday = " + this.brithday +
" monney = " + this.monney;
}
}
///
package five.dao;
import java.util.List;
import five.domain.User;
public interface UserDao {
public void addUser(User user);
public User getUser(int userId);
public void updataUser(User user);
public void deleteUser(User user);
public List<User> findUser(String name, String password);
}
///
package five.daoImpl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import five.dao.UserDao;
import five.dao.myException.MyUserException;
import five.domain.User;
import five.utils.Utils;
public class UserDaoImpl implements UserDao {
public void addUser(User user) {
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = Utils.getConnection();
String sqlString = " insert into user(id, name, brithday, monney, password) value(?,?,?,?,?)";
preparedStatement = connection.prepareStatement(sqlString);
preparedStatement.setInt(1, user.getId());
preparedStatement.setString(2, user.getName());
preparedStatement.setFloat(4, user.getMonney());
preparedStatement.setString(5, user.getPassword());
preparedStatement.setDate(3, new java.sql.Date(user.getBrithday()
.getTime()));
// 4.执行语句
int i = preparedStatement.executeUpdate();
System.out.println("新建" + i + "条记录");
} catch (SQLException e) {
// 为什么 捕获了异常 不能什么也不做?
// 原因 1 不利于debug
// 原因 2 异常 转移
// 例如 在注册用户 出现异常 没有任何处理
// 那么 注册出现异常时, 这个异常就被隐藏掉了
// 当用户 在检索 更新 这个用户的时候 就可能
// 出现异常了。由 系统就 转移。
// 怎样处理 异常?
// 方法一 捕获解决掉(打印)
// 但是这个异常应该 抛出到业务层, 作处理,提醒用户再注册
// 怎样抛出异常?
// 原封不动的抛出去?那样 就要修改接口的签名, (实现接口类抛出的异常是
// 接口声明异常的子集。)
// 导致的结果是 业务层在调用接口实现业务逻辑时, 就要处理 持久层的逻辑
// 有悖于 MVC 三层构架 的思想 (将jdbc 转换成 hibernate?)
// 解决 捕获到异常(编译异常)转换成的 运行异常 抛出去
// 编译异常 必须要处理 运行异常 不是必须要处理
throw new MyUserException(e.getMessage(), e);
} finally {
Utils.free(connection, preparedStatement, null);
}
}
public void deleteUser(User user) {
// TODO Auto-generated method stub
}
public List<User> findUser(String name, String password) {
// TODO Auto-generated method stub
return null;
}
public User getUser(int userId) {
// TODO Auto-generated method stub
return null;
}
public void updataUser(User user) {
// TODO Auto-generated method stub
}
}
///