详解DAO类(数据库操作对象)

DAO类下的各种关系可以用一张图来表示。
在这里插入图片描述

1.DAO类介绍:

1.介绍
1) DAO=DataBase Access Object; 数据库操作对象
2) 在一个DAO类中封装针对某张表操作细节
3) 在项目中所有的DAO类都应该存放在dao包
4) DAO类命名规则 = 表名+Dao DeptDao/EmpDao

例如这样一张表。
在这里插入图片描述
1.实体类介绍:
一个实体类用于描述一张表的结构
2) 实体类的类名应该与表名相同的
dept.frm-------- Dept.class
3) 实体类的属性名应该与表中字段匿名相同
DEPTNO INT private Integer deptNo
DNAME VARCHAR private String dname
LOC VARCHAR private String loc
4)一个实体类的实例对象用于描述表文件一行数据
dept.frm
deptno dname loc
10 Accounting xx
20 Sales BOSTON
Dept dept1 = new Dept(10,‘Accounting’,‘xx’);
Dept dept2 = new Dept(20,‘Sales’,‘BOSTON’)
2.实体类作用: 实体类降低DAO类开发难度
1.有效减少Dao类中方法参数个数,
降低方法开发与使用难度
2.有效减少Dao类与ResultSet操作难度

/**
 * 实体类属性的数据类型必须都是高级引用类型,目的方便存储null值
 * 2021/1/23
 */
public class Dept {

    private Integer deptNo ;
    private String  dname;
    private String  loc;

    public Integer getDeptNo() {
        return deptNo;
    }

    public Dept setDeptNo(Integer deptNo) {
        this.deptNo = deptNo;
        return this;
    }

    public String getDname() {
        return dname;
    }

    public Dept setDname(String dname) {
        this.dname = dname;
        return this;
    }

    public String getLoc() {
        return loc;
    }

    public Dept setLoc(String loc) {
        this.loc = loc;
        return this;
    }

    public Dept(Integer deptNo, String dname, String loc) {
        this.deptNo = deptNo;
        this.dname = dname;
        this.loc = loc;
    }

    public Dept() {
    }
}

基于功能封装—JdbcUtil
1.什么是功能:
一行命令就是一个功能.比如 int a =10
2.JDBC开发流程:
1) 建立一个连接通道
2) 创建一个交通工具
3) 推送SQL命令并得到处理结果
4) 销毁资源
3.JdbcUtil作用降低DAO类开发时,使用JDBC技术难度

ReflectUtil

public class ReflectUtil {

    /*
    *  作用:动态生成INSERT语句
    *
    *  insert语句结构:
    *
    *  insert into  表    (字段名1,字段名2,字段名3) values(值1,值2)
    *  -----------  --    ---------------        ---------------
    *       1        2           3                     4
    *
    *   问题1:如何能够得到表名
    *         实体类的类名应该与对应的表名相同
    *
    *   问题2:如何得到表中字段名
    *         实体类的属性名应该与对应的表中字段名相同
    *
    *   问题3:如何得到要插入的数据行
    *         一个实体类的实例对象封装表文件中一个数据行
    */

    public String  createInsertSql(Object instance)throws Exception{

         String tableName = null;
         Class classManager = null;
         Field fieldArray[]=null;
         StringBuffer columns = new StringBuffer(" (");
         StringBuffer sql = new StringBuffer("insert into ");
         StringBuffer values = new StringBuffer(" values(");

         classManager= instance.getClass(); //得到实例对象,隶属的类文件的管理者
         fieldArray = classManager.getDeclaredFields();
        //1.得到插入语句关联的表名
        tableName = classManager.getSimpleName();

        //2.得到插入语句关联的字段名
        for(Field field:fieldArray){

            String fieldName = field.getName();//得到管理的属性的名称,这个名称就是字段名
            if(!columns.toString().equals(" (")){
                columns.append(",");
            }
            columns.append(fieldName);
        }
        columns.append(")");

        //3.得到插入语句对应的值
        for(Field field:fieldArray){
              field.setAccessible(true);
              Object value = field.get(instance);
              //如果添加的值不是第一个值,则在值添加的到StringBuffer之前,先添加一个","进入到StringBuffer
              if(!values.toString().equals(" values(")){
                  values.append(",");
              }
              values.append("'");
              values.append(value);
              values.append("'");
        }
        values.append(")");

        //拼接
        sql.append(tableName);
        sql.append(columns);
        sql.append(values);

        return sql.toString();
    }

  • 12
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb项目中,通常会将代码按照业务逻辑分成不同的层,其中常见的就是domain、dao、service和controller层。下面分别介绍这四个层的作用和职责: 1. Domain层 Domain层通常包含了业务领域中的实体,如User、Order、Product等,它们是应用程序中的核心数据模型,用于描述业务对象及其属性和行为。Domain层通常不包含任何数据访问或业务逻辑,只包含实体及其相关属性和方法。 2. DAODAO层是数据访问对象层,负责与数据库进行交互,实现数据的增删改查等操作DAO层通常包含了数据访问接口和实现,数据访问接口定义了数据访问操作的接口,而数据访问实现则实现了数据访问接口中定义的操作。 3. Service层 Service层是业务逻辑层,负责处理业务逻辑,如处理用户请求、实现业务规则等。Service层通常通过调用DAO层提供的数据访问接口来实现数据的访问和操作,同时也负责处理事务和异常等。 4. Controller层 Controller层是控制器层,负责处理用户请求,并调用Service层中的方法来处理请求。Controller层通常包含了Web页面、Servlet、Struts2或SpringMVC框架中的Action等,它们负责接收用户请求,获取请求参数并调用相应的Service层方法,然后将处理结果返回给用户。 以上就是四个常见层的作用和职责。通过将应用程序按照不同的层进行分离,可以提高应用程序的可维护性、可扩展性和可测试性,同时也使应用程序更加清晰和易于理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值