DAO设计模式的理解
为了降低耦合性,提出了DAO封装数据库操作的设计模式。
它可以实现业务逻辑与数据库访问相分离。相对来说,数据库是比较稳定的,其中DAO组件依赖于数据库系统,提供数据库访问的接口。
一般的DAO的封装由以下另个原则:
- 一个表对应一个表,相应地封装一个DAO类。
- 对于DAO接口,必须由具体的类型定义。这样可以避免被错误地调用。
在DAO模式中,将对数据的持久化抽取到DAO层,暴露出Service层让程序员使用,这样,一方面避免了业务代码中混杂JDBC调用语句,使得业务落实实现更加清晰。
通常我们创建一个包,用于保存DAO接口,再创建一个包,用于保存DAO接口的实现类即可。
下面展示一个DAO接口实例Manage:
public interface Manage {
    /*插入(insert)操作--->方法名(插入的数据1,插入的数据2,……)-->返回T|F*/
    public boolean insert(String name,String classes,String score);
    /*获取全表(select *)操作-->利用Bean,一行对应一个Bean-->返回一个承载Bean的Collection*/
    public Collection select();
    /*删除(delete)操作-->方法名(where处需要的数据)--->返回T|F*/
    public boolean delete(String id);
    /*获取指定行对象---->方法名(where处需要的数据)---->返回一个承载Bean的List*/
    public List up_select(String id);
    /*修改指定行对象---->方法名(修改数据1,修改数据2,……,where处需要的数据)---->返回T|F*/
    public boolean update(String name,String classes,String id);
}
下面我们针对一张具体的表对Manage创建实现类,比如表名为test,数据库名为bean。
public class ManageInfo implements Manage {
    final private String url="jdbc:mysql://localhost:3306/bean";
    final private String user="root";
    final private String password="root";
    @Override
    public boolean insert(String name, String classes, String score) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection(url, user, password);
        String sql="insert into test(name,classes,score) Values(?,?,?)";
        PreparedStatement st=conn.prepareStatement(sql);
        st.setString(1,name);
        st.setString(2,classes);
        st.setString(3,score);
        int count=st.executeUpdate();
        if(count<=1){
            return  true;
        }else {
            return false;
        }
    }
其余实现近乎相同,若返回Bean类型的Collection,则从ResultSet里读取出每一行的数据。
将一行的数据,存入一个Java Bean中(为Bean 创建对应类型的成员变量),并将Set好的Bean存入Add入Collection。
再读取下一行的数据,重复操作,最后返回Collection即可。
DAO设计模式的理解的更多相关文章
- 简单的Dao设计模式
		简单的DAO设计模式 这两天学习到了DAO(Data Access Object 数据存取对象)设计模式.想谈谈自己的感受,刚开始接触是感觉有点难,觉得自己逻辑理不清,主要是以前学的知识比较零散没有很 ... 
- DAO设计模式(转)
		J2EE开发人员使用数据访问对象(DAO)设计模式把底层的数据访问逻辑和高层的商务逻辑分开.实现DAO模式能够更加专注于编写数据访问代码. 我们先来回顾一下DAO设计模式和数据访问对象. DAO基础 ... 
- java之 ------ DAO设计模式的【具体解释】及常见设计模式的【应用】
		DAO Data Access Object(数据訪问接口) 一.场景和问题 在Java程序中.常常须要把数据持久化,也须要获取持久化的数据.可是在进行数据持久化的过程中面临诸多问题(如:数据源 不同 ... 
- Dao设计模式简单实现
		一.什么是Dao设计模式 Dao设计模式封装了操作具体数据库的细节,对业务层提供操作数据库的接口,因此降低了业务层代码与具体数据库之间的耦合,有利于人员分工,增加了程序的可移植性. Dao设计模式中主 ... 
- DAO设计模式
		DAO设计模式 DAO设计模式简介: DAO设计模式可以减少代码量,增强程序的可移植性,提高代码的可读性. DAO(数据库操作对象)设计模式是 JavaEE 数据层的操作.主要由五部分组成: 1.数据 ... 
- JavaWeb技术(二):DAO设计模式
		1. DAO全称:Data Access Object , 数据访问对象.使用DAO设计模式来封装数据持久化层的所有操作(CRUD),使得数据访问逻辑和业务逻辑分离,实现解耦的目的. 2. 典型的DA ... 
- Java Dao设计模式
		一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/S ... 
- MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
		[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ... 
- DAO设计模式 -- 使用数据库连接类连接MySql数据库并实现添加用户
		1. DAO简介 DAO设计模式是属于J2EE数据库层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性. 2. DAO各部分详解 DAO设计模式包括5个重要的部分,分别为数据 ... 
随机推荐
- lasagne保存网络参数
			# Optionally, you could now dump the network weights to a file like this: # np.savez('model.npz', *l ... 
- currency 过滤器
			<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ... 
- linux系统中 redis 保存数据的5种形式 linux后端模式启动 jedis无法通过IP地址和端口号访问如何修改linux防火墙
			vim修改redis.conf配置文件(我的已经复制到虚拟机的/usr/local/redis/bin目录下)为daemonize yes, 以后端模式启动 ./redis-server redis. ... 
- CBCGPImage的GetSize的问题及解决方法
			BCGControlBar Pro for MFC 25.10是目前(2018-07-16)网上能够找到的最新能够使用的版本,我配合Visual Studio 2010使用.在单文档MFC程序的视图中 ... 
- python中上双互斥锁的线程执行流程
			import threading def sing(): print('进入sing -----------------') for i in range(3): print('进入sing循环 -- ... 
- VMware中Ubuntu开机时停在启动界面,不进入X-window的解决办法
			启动Ubuntu虚拟机时,停在这个画面不动: 试了若干次,都是这样.尝试了新建一个虚拟机然后把.vmdk文件拷过去启动,无法解决. 尝试重启,在这个界面按esc进入grub: 选择恢复模式 recov ... 
- 使用inotify-tools与rsync构建实时备份系统
			使用inotifywait监控文件变动 inotifywait是 inotify-tools 包中提供的一个工具,它使用 inotify API 来监控文件/目录中的变动情况. 在archlinux上 ... 
- iPhone 横屏时默认会放大文字的问题
			有人说用 html { text-size-adjust: 100%; }我发现这个并不能解决问题.下面代码可以完美解决. 添加标签:<meta name="viewport" ... 
- JDK学习---深入理解java中的LinkedList
			本文参考资料: 1.<大话数据结构> 2.http://blog.csdn.net/jzhf2012/article/details/8540543 3.http://blog.csdn. ... 
- 将Komodo Edit打造成Python开发的IDE
			Komodo Edit 支持Python 界面清爽, 将Komodo Edit 设置成Python的IDE,具体操作方法如下: 先添加自定义命令. 再设置命令行参数 设置高级选项 设置快捷键 完成. 
