dao
1)什么是dao
data access object(数据访问对象),
dao封装了数据访问逻辑,使得调用者不用关心
具体的数据访问技术就可以访问数据库或者其它的
存储设备(比如文件、目录服务器、或者是其它的
第三方的程序)。
2)dao的组成
a,实体
一个java类,这个类与数据库中的表对应。
比如,t_order表与Order类对应:
对应关系指的是:
t_order表名与Order类名对应
t_order表的列与Order类的属性对应
t_order表中的一条记录与Order
类的一个实例对应
b,dao接口
声明一系列方法(即对数据库进行哪些操作),
这些方法应该与具体的技术无关。
c,dao实现
实现dao接口的一个具体类
d,工厂
提供符合接口定义的对象,调用者不用关心
对象的创建细节。
也就是说,通过工厂,可以将调用者与要调用的
对象解耦了。
StudentDAO=dao.impl.StudentDAOJdbcImpl
package util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class ConfigUtil {
private static Properties props = new Properties();
static {
InputStream is = ConfigUtil.class.getClassLoader().getResourceAsStream(
"test/config.properties");
try {
props.load(is);
} catch (IOException e) {
e.printStackTrace();
}
}
public static String getValue(String key) {
return props.getProperty(key);
}
public static void main(String[] args) {
System.out.println(getValue("StudentDAO"));
}
}
package util;
public class Factory {
public static Object getInstance(String type) {
String className = ConfigUtil.getValue(type);
Object obj = null;
try {
obj = Class.forName(className).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}
package dao;
import java.util.List;
import entity.Student;
public interface StudentDAO {
public List<Student> list() throws Exception;
public void add(Student s) throws Exception;
public void delete(long id) throws Exception;
public Student find(long id) throws Exception;
public void update(Student s) throws Exception;
}
package dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import util.DBUtil;
import dao.StudentDAO;
import entity.Student;
public class StudentDAOJdbcImpl implements StudentDAO {
public void add(Student s) throws Exception {
Connection conn = DBUtil.getConnection();
PreparedStatement ps = conn
.prepareStatement("insert into t_student(stuNum,name,sex,address) values(?,?,?,?)");
ps.setString(1, s.getStuNum());
ps.setString(2, s.getName());
System.out.println(s.getName());
ps.setString(3, s.getSex());
ps.setString(4, s.getAddress());
System.out.println("1");
ps.executeUpdate();
System.out.println("2");
DBUtil.close(conn);
}
public void delete(long id) throws Exception {
Connection conn = DBUtil.getConnection();
PreparedStatement ps = conn
.prepareStatement("delete from t_student where id = ?");
ps.setLong(1, id);
ps.executeQuery();
DBUtil.close(conn);
}
public Student find(long id) throws Exception {
Connection conn = DBUtil.getConnection();
PreparedStatement ps = conn
.prepareStatement("select * t_student where id=?");
ps.setLong(1, id);
ResultSet rs = ps.executeQuery();
Student s = new Student();
while (rs.next()) {
s.setId(id);
s.setStuNum(rs.getString("stuNum"));
s.setName(rs.getString("name"));
s.setSex(rs.getString("sex"));
s.setAddress(rs.getString("address"));
}
DBUtil.close(conn);
return s;
}
public List<Student> list() throws Exception {
Connection conn = DBUtil.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from t_student");
List<Student> students = new ArrayList<Student>();
while (rs.next()) {
Student s = new Student();
s.setId(rs.getLong("id"));
s.setStuNum(rs.getString("stuNum"));
s.setName(rs.getString("name"));
s.setSex(rs.getString("sex"));
s.setAddress(rs.getString("address"));
students.add(s);
}
DBUtil.close(conn);
return students;
}
public void update(Student s) throws Exception {
Connection conn = DBUtil.getConnection();
PreparedStatement ps = conn
.prepareStatement("update t_student(stuNum,name,sex,address) values(?,?,?,?)");
ps.setString(1, s.getStuNum());
ps.setString(2, s.getName());
ps.setString(3, s.getSex());
ps.setString(4, s.getAddress());
ps.executeUpdate();
DBUtil.close(conn);
}
}
分享到:
相关推荐
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...
DAO(Data Access Objects)是微软在早期开发的一种用于访问数据库的应用程序编程接口(API),它在Visual Basic 6和早期的Microsoft Office版本中被广泛使用。DAO 3.5是该技术的一个特定版本,适用于32位操作系统。...
DAO(Data Access Objects)是微软在早期开发的一种数据访问接口,主要用于访问Microsoft Jet数据库引擎,如Access数据库。DAO 3.5是DAO的一个版本,它在Windows操作系统中广泛使用,尤其是在16位和32位应用程序中。...
DAO Jet数据库引擎是微软在早期开发的用于访问和管理Access数据库的一种组件,它与Jet数据库引擎密切相关。Jet引擎是Microsoft Windows操作系统中一个内置的数据库管理系统,主要用于支持Access数据库和其他使用Jet...
标题中的“系统配置文件 dao350和dao360”指的是Microsoft Office系统中的数据库访问对象(DAO,Database Access Objects)版本350和360。DAO是Microsoft Jet数据库引擎的一部分,主要用于与Access数据库或其他Jet...
DAO(Data Access Objects)是微软在早期开发的一种数据库访问技术,它是Microsoft Jet数据库引擎的一部分,主要用于与Access数据库的交互。DAO3.5是DAO的一个特定版本,它在Windows 95和Windows 98时代非常流行,但...
DAO(Data Access Objects)是微软在早期开发的一种数据访问接口,主要用于访问Microsoft Jet数据库引擎,它是Access数据库的基础。Jet数据库引擎是微软开发的一种强大的、快速的数据库管理工具,尤其适用于小型到...
DAO(Data Access Object)封装包是软件开发中用于处理数据访问层的一种设计模式。它将数据库操作与业务逻辑分离,使得代码更易于维护和测试。在这个"dao封装包"中,我们通常会找到一系列与数据库交互的接口和实现类...
DAO(Data Access Object)模式是软件开发中常用的设计模式之一,主要用于数据库操作的抽象和封装。DAO 1.0 源代码的提供允许我们深入理解这一模式在实际项目中的应用。下面将详细介绍DAO模式的核心概念、作用以及...
**JSP的DAO模式留言板详解** 在Web开发中,DAO(Data Access Object)模式是一种常见的设计模式,用于封装对数据库的操作,将业务逻辑与数据访问层分离,提高代码的可维护性和可测试性。本教程将详细介绍如何使用...
在C#编程中,"通用Dao层"是一个常见的设计模式,用于封装数据库操作,使得业务逻辑层能够专注于处理业务规则,而无需关心底层数据访问的细节。本篇将重点探讨如何利用C#的特性(Attribute)标签来实现这一目标,同时...
**DAO详解** DAO(Data Access Object)模式是软件设计中的一种模式,主要用于数据库访问层的抽象,它将数据操作逻辑封装在对象中,使得业务逻辑层与数据存储层解耦,提高了代码的可复用性和可维护性。本文将深入...
DAO(Data Access Object)模式是一种常见的软件设计模式,它用于封装对数据库的访问操作,将数据访问层与业务逻辑层分离,从而提高系统的可维护性和可扩展性。在这个"用DAO实现的用户登录系统"中,我们可以看到以下...
在.NET开发环境中,自动生成实体类和DAO(Data Access Object)是提高开发效率的重要手段,尤其是在处理大量数据库交互时。这个".net 自动生成实体类、DAO工具"是一个实用的小型工具,能够帮助开发者快速构建数据...
本文将深入探讨如何结合这两种技术实现一个通用的DAO(Data Access Object)设计模式。 首先,我们来看“泛型”。泛型是Java 5引入的新特性,它允许在类、接口和方法中使用类型参数,从而提高了代码的类型安全性和...
DAO(Data Access Object)设计模式是一种在软件工程中用于封装对数据库访问的模式,它将业务逻辑和数据访问逻辑分离,提高代码的可重用性和可测试性。在这个基于DAO设计模式的新闻发布系统中,我们可以深入探讨以下...
DAO(Data Access Object)模式是软件开发中常用的一种设计模式,主要用于数据库操作的抽象和封装。在Java开发中,DAO模式被广泛应用于处理与数据库的交互,以提高代码的可维护性和可测试性。本篇文章将深入探讨DAO...
DAO(Data Access Object)模式是一种设计模式,常用于在应用程序和数据库之间提供一个抽象层,以实现数据访问的独立性。Oracle则是一款强大的关系型数据库管理系统,广泛应用于大型企业的核心系统。 首先,我们来...
DAO(Data Access Object)设计模式是软件开发中一种常见的用于处理数据访问的模式,它将业务逻辑与数据访问逻辑分离,使得代码结构更加清晰,更易于维护和测试。在Java开发中,DAO模式广泛应用于数据库操作,为应用...