DAO设计模式(Java)

本文详细介绍了Java中数据访问对象(DAO)设计模式的应用,包括实体类定义、数据库连接类封装、DAO接口及其实现,展示了如何通过DAO模式实现数据库操作的标准化与模块化。

Java中针对数据库的操作,为了将低级别的数据访问逻辑和高级别的业务处理分离,一般采用数据访问对象(DAO)的设计模式。使用这个模式,我们就不需要修改代码就可以对底层数据库进行更换,也能够让程序逻辑更见清晰,利于扩展。

程序分层

一般我们把程序的结构划分为以下几个层次:

  • 表现层(view)
  • 服务层(service)
  • 领域层(domain)
  • 数据访问层(dao)
    表现层一般是客户端的展示,服务层为表现层提供功能和服务,领域层是系统领域内的活动,数据访问层数据访问对象通过领域实体对数据库进行操作。
    设计时一般从服务层开始,先确定服务层提供的功能和服务,设计接口,再向下设计领域层和数据访问层

具体分析

我们以一个对用户的增删改查过程来进行简单的描述。

定义实体类对象

实体类对象对于我们的数据库中的字段进行映射,在这个我们的用户登录中我们需要定义用户类并对其进行封装。

package bean;
public class User {
    private int id;//用户id
    private  String name;//用户名
    private  String pwd;//用户密码

    //2.get set

    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;
    }

    //3.构造方法

    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    public User() {
    }

    //4.toString 方法重写

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}


数据库连接类

在JDBC连接数据库的步骤中有些步骤在我们访问数据库进行操作时是重复出现的,所以为了提高重用性,我们将这一部分代码段单独封装成工具类,统一为上层DAO提供对于数据库的访问。在本例当中我们使用的数据库MySQL,建立用户表tb_user.
具体实现如下:

import java.sql.*
public class DBUtil{
    private static String driver = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/java3?useSSL=true&characterEncoding=utf-8";
    private static String user = "root";
    private static String password = "123456";
 static {
        try {
            //1.获取驱动
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 //2.创建连接
    public static Connection get_Conn() throws SQLException {
        Connection conn =  DriverManager.getConnection(url, user, password);
        return conn;
    }
    //3.关闭资源
    public static void close_Conn(ResultSet rs , PreparedStatement prst,Connection conn) throws SQLException {
        if (rs != null) {
            rs.close();
        }
        if (prst != null) {
            prst.close();
        }
        if (conn != null) {
            conn.close();
        }
}

DAO接口和实现类

在DAO层我们定义操作用户数据的接口以及接口的实现类。
接口:

public interface UserDao{
//1.新增
public boolean InsertUser(User user);
//2.删除
public boolean DeleteUser(String userName);
//3.查询
public List<User> SelectUser();
//修改
public boolean UpdateUser(User user);
}

实现类给出部分代码:

public class UserDAOImpl implements UserDAO{
protect Connection conn = null;
protect prepareStatement prst = null;
protect Result rt = null;

    //新增
  public static boolean InsertUser(User user){
      try{
       //1.获取连接对象
        conn = DBUtil.get_Conn();
        //2.编写sql
        String sql = "insert into tb_user values(?,?,?)";
         //3.获取对象,对sql预处理
         prst = conn.prepareStatement(sql);
         prst.setInt(1,user.id);
         prst.setString(2,user.name);
         prst.setString(3,user.pwd);
         //4.执行sql
         if(prst.executeUpdate() != 0)
               return true; 
        }
        catch(Exception e){
        e.printStackTrace();
         }
         finally{
          //5.关闭资源
            try {
                DBUtil.get_CloseConn(rs,prst,conn);
            } catch (Exception e) {
                e.printStackTrace();
            }
         }
      return false;
      }
//其他实现 略
//基本模式是一样,特别的在查询时需要对结果集进行处理再返回
}

完成DAO层后就可以去实现业务层,用DAO层提供的实现类方法获取数据进行业务处理。

以上就是我们基本的一个DAO设计模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值