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. Android开源项目SlidingMenu本学习笔记(两)

    我们已经出台SlidingMenu使用:Android开源项目SlidingMenu本学习笔记(一个),接下来再深入学习下.依据滑出项的Menu切换到相应的页面 文件夹结构: watermark/2/ ...

  2. VC绘制控件如何防止闪烁

    理论上不管什么控件都适用,方法如下: 新建一个MFC类,继承原来的控件类型,对于VC自动生成的类进行如下改动: 首先覆盖 OnEraseBkgnd() 防止擦除时填涂背景: BOOL CXXXCtrl ...

  3. Command 传参的几种方式

    Command可以根据CommandParameter传参 关键代码 public ICommand SubmitCommand => _submitCommand; private Relay ...

  4. ASP .NET Views文件夹下面的文件找不到

    习惯将页面和它对应的js,css文件放在一个文件夹下,将这些都放在Views文件夹下     运行的时候发现找不到js和css文件 因为在MVC中,是不建议直接去访问Views文件夹的我们建立的ASP ...

  5. .NET Core 中使用 Humanizer 显示友好时间格式

    今天在将一个 .net framework 项目迁移至 .net core 的过程中,在迁移到显示友好时间格式(比如“1分钟前”,“1小时前”)的代码时,找了找看有没有对应的开源库,结果找到了 Hum ...

  6. iPhone开发笔记(20)EGOImageView的使用方法及注意事项

    EGOImageView是一种实现网络图片的异步加载和缓存的第三方类库,具有相同功能的第三方类库还有SDWebImage.但是相比两个类库的安装和使用来说,EGOImageView更简单一些,下面就介 ...

  7. jquery li练习2-恢复链条

    <!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  8. WPF 打印不显示的元素

    <Window x:Class="_097打印不显示的元素.MainWindow"        xmlns="http://schemas.microsoft.c ...

  9. System.Data.SQLite 中GUID的处理

    原文:System.Data.SQLite 中GUID的处理 项目中正好用到System.Data.SQLite,在手持上使用这个数据库,因为要做数据同步,所以表中的主键都是Guid的数据类型. 在数 ...

  10. Docker笔记03-docker 网络模式

    docker网络模式分为5种 Nat (Network Address Translation) Host other container none overlay 第一种 Nat模式 docker的 ...