如何使用DAO层模式开发

一、什么是DAO模式

DAO就是在数据库与业务逻辑之间,在里面将对数据库操作的代码封装起来.

简单来说,比如数据库有一张表,需要通过代码来实现对这张表的操作.这时候,就在代码那里遍历一个对应这个表的实体类;接着写一个接口;最后写一个实现类来继承这个接口,实现类里面包含数据库语句和操作代码.

二、如何使用

来个例子:比如有一张学生表,要对它做增删改操作,使用DAO模式编写代码

 

 

 

 1.编写实现类

定义属性,及构造方法和get,set方法

public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private String className;
    public Student() {
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getClassName() {
        return className;
    }
    public void setClassName(String className) {
        this.className = className;
    }    
}
    

2.编写接口

public interface StudentDao {
    public void insert(Student stu);//插入
    public void deleteById(Integer id);//删除
    public List<Student> findAll();//查询全部学生
}

3.实现类

实现这个接口,就得重写里面的所有方法,下面进行插入操作

public class StudentDaoImpl implements StudentDao {
    @Override
    public void insert(Student stu) {
        Connection con = null;
        PreparedStatement pstmt = null;
        try {
        //这里封装一个JDBCUtil工具类 con
= JDBCUtil.getConnection(); String sql = "insert into user value(?,?,?)"; pstmt = con.prepareStatement(sql); pstmt.setString(1, stu.getName()); pstmt.setInt(2,stu.getAge()); pstmt.setString(3, stu.getClassName()); pstmt.executeUpdate(); } catch(Exception e) { throw new RuntimeException(e); } finally { try { if(pstmt != null) pstmt.close(); if(con != null) con.close(); } catch(SQLException e) {} } } @Override public void deleteById(Integer id) { } @Override public List<Student> findAll() { return null; } }

在DAO层中,一张表格对应一个实体类,一个实体类对应一个接口,一个接口对应一个实现类.

三、使用DAO模式开发的好处

 1.逻辑清晰,表与实体类之间一一对应,便于后期维护.

 2.降低耦合性,将数据库代码封装起来,提供一个接口.

 3.隔离了数据访问代码和业务逻辑代码

posted @ 2022-09-14 23:10  Tmillion  阅读(186)  评论(0)    收藏  举报