当前位置:Gxlcms > mysql > DAO(DataAccessObjectPattern)

DAO(DataAccessObjectPattern)

时间:2021-07-01 10:21:17 帮助过:38人阅读

总是看到什么什么dao的,但是Dao到底是什么?Dao是一种设计模式,全称Data Access Object Patter。下面翻译一篇小文章,以作解释。 Data Access Object Pattern 或者DAO 模式被用来分离低层次数据访问和高级业务逻辑操作。 下面是一些DAO模式中包含的元素。

总是看到什么什么dao的,但是Dao到底是什么?Dao是一种设计模式,全称Data Access Object Patter。下面翻译一篇小文章,以作解释。

Data Access Object Pattern 或者DAO 模式被用来分离低层次数据访问和高级业务逻辑操作。下面是一些DAO模式中包含的元素。

· Data Access Object Interface - 定义了一个model类上标准的操作方法的接口。

· Data Access Object concrete class - 实现了上面接口的类。这个类负责从数据存储区(数据库、xml)中取得数据。

· Model Object or Value Object - 这是一个简单地POJO(plain Old Java Object)包含了getter和setter方法。由DAO类进行存取。

实现

创建一个Student类代表了Model或Value对象。StudentDao是一个Dao接口。StudentDaoImpl是一个实现StudentDao的类。见下图:


STEP 1.

创建model类,Student

  1. package com.wly.dp.dao;
  2. public class Student {
  3. private String name;
  4. private int rollNo;
  5. Student(String name, int rollNo) {
  6. this.name = name;
  7. this.rollNo = rollNo;
  8. }
  9. public String getName() {
  10. return name;
  11. }
  12. public void setName(String name) {
  13. this.name = name;
  14. }
  15. public int getRollNo() {
  16. return rollNo;
  17. }
  18. public void setRollNo(int rollNo) {
  19. this.rollNo = rollNo;
  20. }
  21. }
STEP 2.

创建一个Dao接口,StudentDao

  1. package com.wly.dp.dao;
  2. import java.util.List;
  3. public interface StudentDao {
  4. public List<student> getAllStudents();
  5. public Student getStudent(int rollNo);
  6. public void updateStudent(Student student);
  7. public void deleteStudent(Student student);
  8. }
  9. </student>
STEP 3.

创建一个实现Dao接口的类,StudentDaoImpl

  1. package com.wly.dp.dao;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class StudentDaoImpl implements StudentDao{
  5. List<student> students; //模拟数据库
  6. public StudentDaoImpl() {
  7. students = new ArrayList<student>();
  8. Student student1 = new Student("Robert",0);
  9. Student student2 = new Student("John",1);
  10. students.add(student1);
  11. students.add(student2);
  12. }
  13. @Override
  14. public List<student> getAllStudents() {
  15. return students;
  16. }
  17. @Override
  18. public Student getStudent(int rollNo) {
  19. return students.get(rollNo);
  20. }
  21. @Override
  22. public void updateStudent(Student student) {
  23. students.get(student.getRollNo()).setName(student.getName());
  24. System.out.println("Student: Roll No " + student.getRollNo()
  25. +", updated in the database");
  26. }
  27. @Override
  28. public void deleteStudent(Student student) {
  29. students.remove(student.getRollNo());
  30. System.out.println("Student: Roll No " + student.getRollNo()
  31. +", deleted from database");
  32. }
  33. }
  34. </student></student></student>
STEP 4.

测试类,Test

  1. package com.wly.dp.dao;
  2. public class Test {
  3. public static void main(String[] args) {
  4. StudentDao studentDao = new StudentDaoImpl();
  5. //
输出所有student for (Student student : studentDao.getAllStudents()) { System.out.println("Student: [RollNo : " + student.getRollNo() + ", Name : " + student.getName() + " ]"); } // 更新一个student Student student = studentDao.getAllStudents().get(0); student.setName("Michael"); studentDao.updateStudent(student); // 得到更新后的student studentDao.getStudent(0); System.out.println("Student: [RollNo : " + student.getRollNo() + ", Name : " + student.getName() + " ]"); } } STEP 5.

验证输出

  1. Student: [RollNo : 0, Name : Robert ]
  2. Student: [RollNo : 1, Name : John ]
  3. Student: Roll No 0, updated in the database
  4. Student: [RollNo : 0, Name : Michael ]


O啦~~~

转帖请保留出处:http://blog.csdn.net/u011638883/article/details/13093701

谢谢!!

人气教程排行