Layer:

UI层:  user interface 用户接口层

Biz层:   service business login layer 业务逻辑层

DAO层:   Date Access Object 数据访问层

1.建立三层架构

UI层(对应包ui):这里就是一个简单的测试类

Biz层(对应包service):包括实体类的service层接口IGradeService和其实现类(impl包下)GradeServiceimpl

DAO层(对应包dao):BaseDAO工具类和实体类的dao层接口IGradeDAO和其实现类(impl包下)GradeDAOimpl

BaseDAO代码:

 package cn.happy.dao;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; /**
* database Data Access Object
* 数据库访问工具类
* Created by yanshaochen on 17-7-25.
*/
public class BaseDAO {
static final String URL="jdbc:mysql://127.0.0.1:3306/t14";
static final String DRIVER="com.mysql.jdbc.Driver";
static final String USR="root";
static final String PASSWORD="root";
private Connection con=null;
private PreparedStatement ps=null;
private ResultSet rs=null;
//getConnection
public Connection getConnection() throws Exception {
Class.forName(DRIVER);
if(con==null||con.isClosed()){
con= DriverManager.getConnection(URL,USR,PASSWORD);
}
return con;
}
//close rs,ps,con
public void closeResources() throws Exception {
if(rs!=null)
rs.close();
if(ps!=null)
ps.close();
if(con!=null)
con.close();
}
//executeUpdate
public int executeUpdate(String sql,Object... objs) throws Exception {
int count=;
getConnection();
ps=con.prepareStatement(sql);
if(objs!=null){
for (int i=;i<objs.length;i++){
ps.setObject(i+,objs[i]);
}
} count=ps.executeUpdate();
return count;
}
//executeQuery
public ResultSet executeQuery(String sql,Object... objs) throws Exception {
getConnection();
ps=con.prepareStatement(sql);
if(objs!=null){
for (int i=;i<objs.length;i++){
ps.setObject(i+,objs[i]);
}
} rs = ps.executeQuery();
return rs;
}
}

实体类代码:

 package cn.happy.entity;

 /**
* Created by yanshaochen on 17-7-25.
*/
public class Grade {
private String gradeName; public String getGrade() {
return gradeName;
} public void setGrade(String gradeName) {
this.gradeName = gradeName;
}
}

Biz层接口代码:

 package cn.happy.service;

 import cn.happy.entity.Grade;

 /**
* Created by yanshaochen on 17-7-25.
*/
public interface IGradeService {
boolean addGrade(Grade grade) throws Exception;
}

实现类代码(与dao层联系):

 package cn.happy.service.impl;

 import cn.happy.dao.IGradeDAO;
import cn.happy.dao.impl.GradeDAOImpl;
import cn.happy.entity.Grade;
import cn.happy.service.IGradeService; /**
* Created by yanshaochen on 17-7-25.
*/
public class GradeServiceImpl implements IGradeService {
IGradeDAO dao=new GradeDAOImpl();
@Override
public boolean addGrade(Grade grade) throws Exception {
return dao.addGrade(grade);
}
}

DAO层接口代码:

 package cn.happy.dao;

 import cn.happy.entity.Grade;

 /**
* Created by yanshaochen on 17-7-25.
*/
public interface IGradeDAO {
boolean addGrade(Grade grade) throws Exception;
}

实现类代码:

 package cn.happy.dao.impl;

 import cn.happy.dao.BaseDAO;
import cn.happy.dao.IGradeDAO;
import cn.happy.entity.Grade; /**
* Created by yanshaochen on 17-7-25.
*/
public class GradeDAOImpl extends BaseDAO implements IGradeDAO{
@Override
public boolean addGrade(Grade grade) throws Exception {
boolean flag=false;
String sql="insert into grade(gradeName)values(?);";
int count = executeUpdate(sql,grade.getGrade());
if(count>){
flag=true;
}
return flag;
}
}

测试类代码:

 package cn.happy.ui;

 import cn.happy.entity.Grade;
import cn.happy.service.IGradeService;
import cn.happy.service.impl.GradeServiceImpl; /**
* Created by yanshaochen on 17-7-25.
*/
public class MyMain {
public static void main(String[] args) throws Exception {
Grade grade = new Grade();
grade.setGrade("T21");
IGradeService igs=new GradeServiceImpl();
boolean isSuccess = igs.addGrade(grade);
if(isSuccess){
System.out.println("添加成功!");
}else {
System.out.println("添加失败!");
}
}
}

Java学习笔记——三层架构的更多相关文章

  1. C# 学习笔记 三层架构系列(控件一)

    下面是我两周的学习总结:这是我写给自己的,如果哪位朋友有幸看到这篇文章就是缘分.如果所说的内容不对,就请纠正.勿喷!!! 想要将两周的学习知识通过文字.通过代码.通过图片储备起来,以防自己那天思维短路 ...

  2. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  3. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  4. 20145330第六周《Java学习笔记》

    20145330第六周<Java学习笔记> . 这周算是很忙碌的一周.因为第六周陆续很多实验都开始进行,开始要准备和预习的科目日渐增多,对Java分配的时间不知不觉就减少了,然而第十和十一 ...

  5. 20145330第五周《Java学习笔记》

    20145330第五周<Java学习笔记> 这一周又是紧张的一周. 语法与继承架构 Java中所有错误都会打包为对象可以尝试try.catch代表错误的对象后做一些处理. 使用try.ca ...

  6. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  7. JavaWeb学习之三层架构实例(三)

    引言 通过上一篇博客JavaWeb学习之三层架构实例(二)我们基本上已经实现了对学生信息列表的增删改查操作(UI除外),但是不难看出,代码冗余度太高了,尤其是StudentDao这个类,其中的增删改查 ...

  8. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  9. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

随机推荐

  1. Mac版Visual Studio预览版

    来了,Mac版Visual Studio预览版开放下载 投递人 itwriter 发布于 2016-11-17 12:11 评论(7) 有1317人阅读 原文链接 [收藏] « » 微软前俩天宣布,推 ...

  2. ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 使用 EF 框架查询数据 上一章节我们学习了如何设置 ...

  3. 离散时间信号常见函数的实现(matlab)

    1. 单位样本序列 δ(n−n0)={1,n=n00,n≠n0 function [x, n] = impseq(n0, n1, n2) n = n1:n2; x = [n == n0]; 2. 单位 ...

  4. word 软换行与硬换行

    word 下的软回车,就是按住 Shift+Enter 之后产生的一种效果,通常在文字后面会有一个向下的箭头: 硬回车就是只敲击回车(enter)产生的一种效果了,通常就会在文字后面产生一个向左弯区的 ...

  5. CentOS 6安装桌面

    安装图形界面 yum -y groupinstall "X Window System" "Chinese Support" "Desktop&quo ...

  6. linq to entity GroupBy多个字段

    var items = _voteRecordRepository.GetAll() .Where(x => programIds.Contains(x.ProgrammeId)) .Group ...

  7. qt5.9模块

    QAxContainer Module is a Windows-only extension for accessing ActiveX controls and COM objects 模块仅适用 ...

  8. C++ Boost库简介(一些自己的感受)

    boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化.不过对比STL,boost更加实用.STL集中在算法部分,而boost包含了不少工具类, ...

  9. 通过 vuex 实现 vue-echarts 图表的手动 resize

    背景:项目有用到 vue-echarts, 百度推出的 vue 版本的 Echarts,图表自带响应式属性 auto-resize, 来实现窗口尺寸变化时,图表的尺寸自适应,但是发现它是靠监听 win ...

  10. CentOS搭建python开发环境

    装了个CentOS 5.5,想在上面搭个python的开发环境,可是还是遇到了很多问题,记录一下过程: 1.python升级 查看python版本 python -V Python 2.4.3 因为p ...