• 古诗MySQL数据库中使用到的DAO模式


    一.什么是DAO模式

      DAO(Data Access Object Pattern)用于将低层的数据操作API与上层的业务逻辑层分离,其主要涉及以下几个部分:

    1.Data Access Object Interface

    定义了在model object上的标准操作接口。

    2.Data Access Object concrete class

    实现了1中的接口,负责从database或者xml等中操作数据。

    3.Model Object or Value Object

    简单的POJO对象。

    二.DAO模式例子
    Model or Value Object :Student

    Data Access Object Interface: StudentDAO

    Concrete class Implement Data Access Object Interface:StudentDaoImpl

    StudentDAO用来展示如何使用DAO模式。

    Step1

    Student.java

    public class Student {
       private String name;
       private int rollNo;
    
       Student(String name, int rollNo){
          this.name = name;
          this.rollNo = rollNo;
       }
    
       public String getName() {
          return name;
       }
    
       public void setName(String name) {
          this.name = name;
       }
    
       public int getRollNo() {
          return rollNo;
       }
    
       public void setRollNo(int rollNo) {
          this.rollNo = rollNo;
       }
    }
    

     Step2

    Data Access object interface

    StudentDao.java

    import java.util.List;
    
    public interface StudentDao {
       public List<Student> getAllStudents();
       public Student getStudent(int rollNo);
       public void updateStudent(Student student);
       public void deleteStudent(Student student);
    }
    

     Step3

    concrete class implemting above interface

    StudentDaoImpl.java

    import java.util.ArrayList;
    import java.util.List;
    
    public class StudentDaoImpl implements StudentDao {
        
       //list is working as a database
       List<Student> students;
    
       public StudentDaoImpl(){
          students = new ArrayList<Student>();
          Student student1 = new Student("Robert",0);
          Student student2 = new Student("John",1);
          students.add(student1);
          students.add(student2);        
       }
       @Override
       public void deleteStudent(Student student) {
          students.remove(student.getRollNo());
          System.out.println("Student: Roll No " + student.getRollNo() + ", deleted from database");
       }
    
       //retrive list of students from the database
       @Override
       public List<Student> getAllStudents() {
          return students;
       }
    
       @Override
    public Student getStudent(int rollNo) {
          return students.get(rollNo);
       }
    
       @Override
       public void updateStudent(Student student) {
          students.get(student.getRollNo()).setName(student.getName());
          System.out.println("Student: Roll No " + student.getRollNo() + ", updated in the database");
       }
    }

    step4

    use StudentDao to demonstrate DAO pettern

    public class DaoPatternDemo {
       public static void main(String[] args) {
          StudentDao studentDao = new StudentDaoImpl();
    
          //print all students
          for (Student student : studentDao.getAllStudents()) {
             System.out.println("Student: [RollNo : " + student.getRollNo() + ", Name : " + student.getName() + " ]");
          }
    
    
          //update student
          Student student =studentDao.getAllStudents().get(0);
          student.setName("Michael");
          studentDao.updateStudent(student);
    
          //get the student
          studentDao.getStudent(0);
          System.out.println("Student: [RollNo : " + student.getRollNo() + ", Name : " + student.getName() + " ]");		
       }
    }
    
  • 相关阅读:
    tomcat的部署的三种方式
    烤肉说
    抽象思维
    如何沟通
    如何学习
    道别信
    不要将预感抹杀
    OpenCV 用cv::IMREAD_GRAYSCALE与cv::cvtColor转灰度得到灰度图不一致问题
    Qt 文件夹不存在,创建文件夹,文件不存在,创建文件
    Qt 一个信号对应多个槽,多个信号对应一个槽的执行顺序
  • 原文地址:https://www.cnblogs.com/chuiyuan/p/5200340.html
Copyright © 2020-2023  润新知