这是项目的架构

dao层下面有一个平级的包 impl   //dao层  访问数据库。

GradeDAOImpl 他继承了BaseDAO 实现了IGradeDAO接口

public class GradeDAOImpl extends BaseDAO implements IGradeDAO {

    @Override
public List<Grade> findAllGrades() throws Exception {
List<Grade> list = new ArrayList<Grade>();
String sql = "select * from grade";
ResultSet rs = executeQuery(sql);
if (rs != null) {
while (rs.next()) {
Grade grade = new Grade();
grade.setGid(rs.getInt("gid"));
grade.setGname(rs.getString("gname"));
list.add(grade); }
}
return list;
} @Override
public boolean addGrade(Grade grade) throws Exception {
boolean flag = false;// 添加失败
String sql = "insert into grade(gname) values(?)";
int count = executeUpdate(sql, grade.getGname());
if (count > ) {
flag = true;
}
return flag;
} }

BaseDAO类 //访问数据库的底层类

/**
* 数据库访问的工具类
*
* @author Happy
*
*/
public class BaseDAO { // 定义四个静态常量,保存数据连接信息
private static final String driver = "com.mysql.jdbc.Driver";
private static final String url = "jdbc:mysql:///s2230myschool"; // localhost
// //
//
private static final String username = "root";
private static final String password = ""; // 三个接口
private Connection con;
private PreparedStatement ps;
private ResultSet rs; // 01.写一个 返回连接的方法
public Connection getConnection() throws Exception {
Class.forName(driver);
if (con == null || con.isClosed()) {
con = DriverManager.getConnection(url, username, password);
}
return con;
} // 02.写一个执行增 删 改操作的方法
public int executeUpdate(String sql, Object... objs) throws Exception {
getConnection();
ps = con.prepareStatement(sql);
for (int i = ; i < objs.length; i++) {
ps.setObject(i + , objs[i]);
}
int count = ps.executeUpdate();
return count;
} // 03.写一个执行查询操作的方法
public ResultSet executeQuery(String sql, Object... objs) throws Exception {
getConnection();
ps = con.prepareStatement(sql);
for (int i = ; i < objs.length; i++) {
ps.setObject(i + , objs[i]);
}
rs = ps.executeQuery();
return rs;
} // 04.写一个回收资源的方法 public void closeResource() {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (con != null) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
} }

IGradeDAO接口

public interface IGradeDAO {

    // 01.书写一个用于查询所有年级名称和编号的方法
public List<Grade> findAllGrades() throws Exception; // 02.写一个用户添加年级的方法
public boolean addGrade(Grade grade) throws Exception;
}

entity层  //实体类

public class Grade {
private int gid;
private String gname; public int getGid() {
return gid;
} public void setGid(int gid) {
this.gid = gid;
} public String getGname() {
return gname;
} public void setGname(String gname) {
this.gname = gname;
} }

service层 有一个平级的 impl层   //  GradeServiceImpl 实现了 IGadeService 接口

GradeServiceImpl :

public class GradeServiceImpi implements IGradeService {
// 需要向下依赖DAO的实例 以及他提供的方法
IGradeDAO dao = new GradeDAOImpl(); @Override
public List<Grade> findAllGrades() throws Exception {
return dao.findAllGrades();
} @Override
public boolean addGrade(Grade grade) throws Exception {
return dao.addGrade(grade);
} }

IGadeService 接口 :

public interface IGradeService {
// 01.书写一个用于查询所有年级名称和编号的方法
public List<Grade> findAllGrades() throws Exception; // 02.写一个用户添加年级的方法
public boolean addGrade(Grade grade) throws Exception;
}

test层 //UI层

//测试类:

public class JDBCTest {

    public static void main(String[] args) throws Exception {

        /*GradeDAOImpl gradeDAO = new GradeDAOImpl();
Grade grade = new Grade();
grade.setGname("精英班");
boolean flag = gradeDAO.addGrade(grade);
System.out.println(flag);*/ //UI层 依赖于service
IGradeService service =new GradeServiceImpi(); List<Grade> list =service.findAllGrades(); for(Grade grade: list){
System.out.println(grade.getGname());
} } }

DAO模型 架构的更多相关文章

  1. DAO模型

    DAO模型 前面我们在使用JDBC时解决的都是一些很简单的问题,例如登录,注册等等,所以有些例直接把代码写在了main方法中.这种写法很容易出现代码臃肿,耦合度高,不能模块化开发等诸多弊端,特别是将来 ...

  2. jdbc mysql crud dao模型 sql注入漏洞 jdbc 操作大文件

    day17总结 今日内容 l JDBC 1.1 上次课内容总结 SQL语句: 1.外键约束:foreign key * 维护多个表关系! * 用来保证数据完整性! 2.三种关系: * 一对多: * 一 ...

  3. linux块设备模型架构框架

    Linux块设备的原理远比字符设备要复杂得多,尽管在linux这一块的方法论有很多相似之处,但考虑到它是用中块结构,它常常要搭配内存页管理,页缓冲块缓冲来改善硬盘访问的速度,按照块硬件最大的性能要求进 ...

  4. Node实现简单的注册时后端的MVC模型架构

    实现一个简单的注册界面后端MVC模型架构 第一步:在生成的express框架的app.js中添加一个路由,代码如下:var api = require('./routes/api'); app.use ...

  5. 基于Wiki的知识共享平台模型架构

    一.引言 当今的全球化知识经济社会中呈现出信息泛滥和知识更新周期短的现象,知识管理逐渐成为现代企业管理中不容忽视的一环.虚拟企业是基于共识目标而组成的动态协作组织,成员参与的流动性与各成员之间地域分布 ...

  6. 【tornado】系列项目(一)之基于领域驱动模型架构设计的京东用户管理后台

    本博文将一步步揭秘京东等大型网站的领域驱动模型,致力于让读者完全掌握这种网络架构中的“高富帅”. 一.预备知识: 1.接口: python中并没有类似java等其它语言中的接口类型,但是python中 ...

  7. 一个通用的DAO模型实现增删改查

    首先三个架包: mysql-connector-java-jar commons-dbcp-1.4jar commons-pool-1.5.5jar 导进去: (从上往下一次调用,实现功能) ---- ...

  8. swoole的进程模型架构

    swoole的强大之处就在与其进程模型的设计,既解决了异步问题,又解决了并行. 主线程MainReactor swoole启动后主线程会负责监听server socket,如果有新的连接accept, ...

  9. 简述 高性能Linux服务器 模型架构 设计

    主要从三个方面进行分析: 1.事件处理模式 2.并发模式 一.事件处理模式 1.Reactoor模式 定义: 主线程只负责监听文件描述符上是否有事件发生,有的话立即将该事件通知工作线程,除此之外,主线 ...

随机推荐

  1. ORACLE(emp)表习题与答案

    因为答案都是小编自己写的,解法可能有多种,如果您觉得我的解法有误,希望您有时间给我留言. 一.习题 (1) 查询20部门的所有员工信息. SELECT * FROM emp where deptno ...

  2. Zookeeper详解-安装(四)

    ZooKeeper服务器是用Java创建的,它在JVM上运行.你需要使用JDK 6或更高版本. 步骤1:验证Java安装 相信你已经在系统上安装了Java环境.现在只需使用以下命令验证它. $ jav ...

  3. ZooKeeper学习之路(四)—— Java 客户端 Apache Curator

    一.基本依赖 Curator是Netflix公司开源的一个Zookeeper客户端,目前由Apache进行维护.与Zookeeper原生客户端相比,Curator的抽象层次更高,功能也更加丰富,是目前 ...

  4. Fish and Oh My Fish in Ubuntu

    After install Fish shell, then install Oh My Fish . Oh My Fish(shortly OMF) can make our Fish shell ...

  5. 用户点击获取验证码之后我们会发送一条信息到用户手机,然后就会出现一个倒计时按钮,很像支付宝手机付款效果了,下面我给大家分享两个js效果

    js代码  代码如下 复制代码 <div class="input">    <input type="button" id="bt ...

  6. TensorFlow 2.0 入门教程实战案例

    中文文档 TensorFlow 2 / 2.0 中文文档 知乎专栏 欢迎关注知乎专栏 https://zhuanlan.zhihu.com/geektutu 一.实战教程之强化学习 TensorFlo ...

  7. POJ 2778:DNA Sequence(AC自动机构造矩阵)

    http://poj.org/problem?id=2778 题意:有m个病毒DNA,问构造一个长度为n的不带病毒DNA的字符串可以有多少种. 思路:看到这题有点懵,想了挺久题解的思路. 使用AC自动 ...

  8. 数字IC前后端设计中的时序收敛(三)--Hold违反的修复方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程>(二维码见博文底部) 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教 ...

  9. [国家集训队2012]tree(陈立杰) 题解(二分+最小生成树)

    tree 时间限制: 3 Sec  内存限制: 512 MB 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. 输入 第一行V, ...

  10. ServiceFabric极简文档-5.1 编程模型选择

    项目中:actor用的服务是无状态服务:ASP.NET Core用的是无状态ASP.NET Core模板. ​