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. Matlab Tricks(十八)—— 矩阵间元素距离的计算

    两个矩阵间元素(向量)距离的度量,首先想到的是遍历,循环的方式,显然 matlab 下的编程并不推荐,matlab 下矩阵向量化编程效率尤高. 先考虑两个向量距离的计算: ∥x−y∥2=∥x∥2+∥y ...

  2. WPF中制作立体效果的文字或LOGO图形

    原文:WPF中制作立体效果的文字或LOGO图形 较久之前,我曾写过一篇:"WPF绘制党徽(立体效果,Cool) "的博文.有感兴趣的朋友来EMAIL问是怎么制作的?本文解决此类问题 ...

  3. C#中的String.Format介绍

    关键字:C# string.format作者:txw1958原文:http://www.cnblogs.com/txw1958/archive/2012/11/15/csharp-string_for ...

  4. Python 爬虫 —— BeautifulSoup

    from bs4 import BeautifulSoup % 首字母大写,显然这是一个类 1. BeautifulSoup 类 HTML 解析类(parser) r = requests.get(. ...

  5. c#调api串口通讯

    原文:c#调api串口通讯 在调试ICU通信设备的时候,由于串口通信老出现故障,所以就怀疑CF实现的SerialPort类是否有问题,所以最后决定用纯API函数实现串口读写. 先从网上搜索相关代码(关 ...

  6. [Unity3D]Unity3D叙利亚NGUI血液和技能的冷却效果

    ---------------------------------------------------------------------------------------------------- ...

  7. 【Linux知识】server性能测试--UnixBench

    链接地址: http://blog.csdn.net/jason_asia/article/details/38309079 1.1.   server性能测试UnixBench 分别DELL R72 ...

  8. Dijkstra含权图最短路径;审判,不要错过枚举退款保证不会重复;国际象棋八皇后问题

    求两节点的最短通路.对于无权图,能够通过图的广度优先遍历求解.含权图一般通过Dijkstra算法求解. import java.util.ArrayList; import java.util.Has ...

  9. js,css引用顺序设定

    遇到的困难 在ASP .NET MVC里面,会使用_Layout.cshtml来绘制一些全局的公共页面,以及引用相关的css和js而在每个独立的页面中,也有自己独立的js一般来说,希望公共的js放在独 ...

  10. 【推荐网站】下载国外网盘+强大的离线下载站—offcloud.com

    博主在网上浏览时看到一篇帖子,推荐了一个离线下载网站–offcloud.com,支持上传种子文件.磁力链和几十家网盘的直连下载,厉害了我的哥,这是个啥网站这么666.即使之前咱们写了几篇文章来自建下载 ...