DAO模式

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封装起来,方法参数和返回值都是对象,业务层通过操作这些对象,完成对数据库增删改查!
    1. DAO模式实现 插入数据
      (1)创建 TransferObject 对象
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);
        }
    }
  1. 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;
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值