Dao层——数据访问层

Dao层是具体到每个操作,每个表的增删查改。那怎么写这个数据访问层呢?首先是数据库的设计以及所计划实现的功能,之后是IBean、IDao这两个基础接口以及这两个接口的实现,再之后到实现类设计的时候对于结构的思考,思考如何用更少的代码实现更多的操作亦或者用额外的代码实现解耦操作。接下来我将简单的介绍两个常用的Dao层接口:IBean接口和IDao接口

IBean接口

IBean接口是为了标识数据库表实体类而生的接口。继承IBean接口可以降低代码重复率,减少代码耦合。

import java.io.Serializable;public interface IBean extends Serializable {//继承序列化接口
}

IDao接口

IDao接口是为了具体操作而设立的接口,继承IDao接口可以标识这个接口是一个数据库操作接口。

public interface IDao<T extends IBean> {}

可以看到在IDao接口中我使用了泛型,并且把泛型的参数边界进行了固定,减少泛型擦除对它的影响。

下面开始正式构建结构

在项目的建立过程中我们应该先想好数据库表设计,当设计好数据库表后,开始思考需要实现一些什么功能,同时思考是否可以把功能给分解开来,减少程序的耦合度,使用模块化得结构来实现功能。
数据库表的设计——以Student表为例
1、数据库表的实体类

public class StudentBean implements IBean {//数据库表Student的实体类private int studentID;private String studentName;private String studentSex;public StudentBean(int studentID, String studentName, String studentSex) {this.studentID = studentID;this.studentName = studentName;this.studentSex = studentSex;}public int getStudentID() {return studentID;}public StudentBean setStudentID(int studentID) {this.studentID = studentID;return this;}public String getStudentName() {return studentName;}public StudentBean setStudentName(String studentName) {this.studentName = studentName;return this;}public String getStudentSex() {return studentSex;}public StudentBean setStudentSex(String studentSex) {this.studentSex = studentSex;return this;}@Overridepublic String toString() {return "StudentBean{" +"studentID=" + studentID +", studentName='" + studentName + '\'' +", studentSex='" + studentSex + '\'' +'}';}
}

2、写Student的IDao接口
使用泛型减少对StudentBean的依赖

import java.util.List;public interface IStudentDao<T extends IBean> extends IDao<T> {public List<T> select();//获取所有的学生信息并且保存到list对象中
}

3、写IStudentDao的实现类
在具体实现时才指定使用StudentBean类

import java.util.List;public class ImplStudentDao implements IStudentDao<StudentBean> {public ImplStudentDao() {}@Overridepublic List<StudentBean> select() {//在这里写具体的方法。。。}
}

总结

代码结构:

当然在我认为,这个结构还没有到最优的选择,但却不失为是一种好方法,在下一节中我会讲解一下结合工厂模式的话Dao层该怎么写。
Java语言Dao层设计(二)
Java语言Dao层设计(三)

java语言的Dao层设计(一)—— Dao层基本结构设计相关推荐

  1. JAVA语言考试系统的设计与实现(论文+源代码+文献综述+外文翻译+开题报告)

    毕业论文(设计)开题报告 论文题目: java考试系统 学生姓名: 年级(学号): 二级学院: 专业: 指导教师: 职称: 填表日期:20 年 月 日 学 院 教 务 处 制 一.选题依据(背景与意义 ...

  2. Java语言程序设计----- 图形用户界面设计

    Java语言程序设计----- 图形用户界面设计 1.实验目的 (1)掌握Java Swing组件的使用方法. (2)理解委托事件处理模型. (3)设计具有图形用户界面的.能够响应事件的Java应用程 ...

  3. Java语言语法语义分析器设计与实现

    http://tol.bit.edu.cn/Able.Acc2.Web/Template/View.aspx?wmz=3126&courseType=1&courseId=1959&a ...

  4. java程序设计教学计划_《Java语言程序设计》课程设计大纲

    <Java语言课程设计>教学大纲 课程代码:0806729004 课程名称:Java语言课程设计 适用专业:信息管理与信息系统专业 设计周数:1周 设计学分:0.5学分 一.课程设计的目的 ...

  5. java语言在线编译器的设计与实现,已获万赞

    三面头条 面试岗位是后台研发工程师,地点选择了上海,通过大佬内推,跳过死亡笔试,加上疫情期间,所以直接视频面,从3点开始,断断续续到晚上8点结束. 一共三轮技术面试,每一轮都要写代码,也喜欢问一些底层 ...

  6. java语言设计论文_(C)论文(JAVA语言考试系统的设计与实现)

    3.2.3各类试题模块 1)选择题模块 http://www.paper51.com 初次进入选择题界面时,显示第一个题目的内容.可以用"上题"."下题" 按钮 ...

  7. 数据访问层设计(持久层架构设计)

    1.在线访问[直接根据需要每次调用] 2.Data Access Object [感觉类似于自己写的数据访问层明天CAT,专门用来访问数据库的] 3.DataTransfer Object [感觉类似 ...

  8. java实现火车票查询_各位朋友,有人知道怎么用Java语言设计一个火车票购票系统吗?...

    一.需求分析 1.设计题目:车票管理系统 用JAVA语言和数据结构知识设计设计车票管理系统.要求如下所述: 一车站每天有n个发车班次,每个班次都有一个班次号(1.2.3-n),固定的发车时间,固定的路 ...

  9. petshop详解之五:PetShop之业务逻辑层设计

    五 PetShop之业务逻辑层设计业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分.它的关注点主要集中在业务规则的制定.业务流程的实现等与业务需求有关的系统设计 ...

  10. java语言模拟_Java语言模拟操作系统.doc

    河北大学2010级操作系统课程设计论文 PAGE PAGE 27 装订线 装 订 线 (指导教师用表) 学 生 姓 名 指 导 教 师 论文(设计)题目 Java语言模拟操作系统 主要研究 (设计)内 ...

最新文章

  1. [2008.06.10 23:20:00] 心智成熟的旅程
  2. Mysql 知识点总结(持续更新)
  3. Centos7常用操作
  4. Java 中 String 的常用方法(二)
  5. python记录日志_5分钟内解释日志记录—使用Python演练
  6. 工作406- Error:Node Sass version 5.0.0 is incompatible with ^4.0.0 问题解决
  7. englishpod主持人对话文本_Englishpod 23 | 主持人文本讲解
  8. (c语言)求x的y次方
  9. tika获取压缩文件内容
  10. 最全Mac系统快捷键一览
  11. UNI-APP实现扫描二维码
  12. iOS开发调试技巧之模拟定位国外位置
  13. 如何用 css 画一个正方体
  14. 维基百科的语料库下载以及信息提取笔记
  15. 云服务器被攻击了快速解决方案
  16. 关于html中锚点功能的使用
  17. 机器学习:房价预测项目实战
  18. 浅析NDI 5(一)基于NDI 5如何打造全球NDI演播室?
  19. 回溯法解决01背包-非递归算法-效率低
  20. 计算机cfd教学,CFD数值模拟过程

热门文章

  1. 原创 | GIS国产化除了软件还有什么
  2. 海康设备NVR、IPC取rtsp流格式
  3. 苹果开发者续费以及查看账号到期时间
  4. Mysql精度丢失踩坑记录
  5. Linux文件查找find
  6. 电脑病毒删除的文件怎么找回?两种方法,快来试试吧
  7. chrome恐龙游戏java_自动玩Chrome浏览器的小恐龙游戏
  8. C++ 多继承类 虚基类
  9. 关于我们 - 飞客旅行网 - 最大的中文酒店常客,航空常客,信用卡讨论网站!...
  10. Java打印字母金字塔