1.DAO模式:数据层用DAO模式完全将数据源底层实现封装起来,业务层开发人员不需要了解底层实现。通过对象操作完成对数据源增删改查!
Business Object :代表数据的使用者 (业务层程序)
DataAccessObject :抽象并封装了对底层数据源的操作 (数据层程序)
DataSource 数据源 — mysql数据库
TransferObject 表示数据的Java Bean
BussinessObject 通过 将transferObject 传递 DataAccessObject 完成对DataSource的增删改查
用DAO模式重写对users表增删改查 !
在service包中创建 BusinessObject对象
在dao包中 创建 DataAccessObject对象
在domain包中 创建 TransferObject 对象
- 业务层通过对象的操作,完成对数据源增删改查
DAO模式,将增删改查sql封装起来,方法参数和返回值都是对象,业务层通过操作这些对象,完成对数据库增删改查!
- DAO模式实现 插入数据
(1)创建 TransferObject 对象
- DAO模式实现 插入数据
public class User {
//传输对象,保存user相关数据
// 类的属性 应该与数据库字段 一一对应
private int id;
private String name;
private String pwd;
private String email;
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 String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
(2)创建BusinessObject对象
public void testInsert() {
User user = new User();
user.setId(10);
user.setName("小王");
user.setPwd("123");
user.setEmail("xiaowang@itcast.cn");
// 业务层将 对象 传递 数据层DAO 完成对数据表增删改查
UserDAO userDAO = new UserDAO();
userDAO.insert(user);
}
(3)创建DataAccessObject对象
// 封装了数据源 增删改查底层实现
public void insert(User user) {
// 将 user中数据 保存到数据库
Connection conn = null;
Statement stmt = null;
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
// 参数在传入user对象中
String sql = "insert into users values(" + user.getId() + ",'"
+ user.getName() + "','" + user.getPwd() + "','"
+ user.getEmail() + "')";
stmt.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.release(stmt, conn);
}
}
- DAO模式实现 删除、更新查询数据
3.1 删除
public void testDelete() {
User user = new User();
user.setId(10);
UserDAO userDAO = new UserDAO();
userDAO.delete(user);
}
public void delete(User user) {
Connection conn = null;
Statement stmt = null;
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
// 参数在传入user对象中
String sql = "delete from users where id = " + user.getId();
stmt.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.release(stmt, conn);
}
}
3.2 更新
public void testUpdate() {
User user = new User();
user.setId(3);
user.setName("大国");
user.setPwd("123456");
user.setEmail("daguo@itcast.cn");
UserDAO userDAO = new UserDAO();
userDAO.update(user);
}
// 全字段修改
public void update(User user) {
Connection conn = null;
Statement stmt = null;
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
// 参数在传入user对象中
// 在修改时,通过id修改该条记录所有字段
String sql = "update users set name='" + user.getName()
+ "' ,pwd='" + user.getPwd() + "',email='"
+ user.getEmail() + "' where id = " + user.getId();
stmt.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.release(stmt, conn);
}
}
3.3 查询
public void testFindAll() {
UserDAO userDAO = new UserDAO();
List<User> users = userDAO.findAll();
for (User user : users) {
System.out.println(user.getName());
}
}
public List<User> findAll() {
List<User> users = new ArrayList<User>();
// 查询数据
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from users";
rs = stmt.executeQuery(sql);
while (rs.next()) {
// 结果集每行 一条记录 ----- User对象
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setPwd(rs.getString("pwd"));
user.setEmail(rs.getString("email"));
users.add(user);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return users;
}
指定查找
public void testFindById() {
int id = 3;
UserDAO userDAO = new UserDAO();
User user = userDAO.findById(id);
System.out.println(user.getName());
}
public User findById(int id) {
User user = null;
// 查询数据
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from users where id = " + id;
rs = stmt.executeQuery(sql);
// 结果集只有一条
if (rs.next()) {
// 结果集每行 一条记录 ----- User对象
user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setPwd(rs.getString("pwd"));
user.setEmail(rs.getString("email"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return user;
}