Java学习笔记——三层架构
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学习笔记——三层架构的更多相关文章
- C# 学习笔记 三层架构系列(控件一)
下面是我两周的学习总结:这是我写给自己的,如果哪位朋友有幸看到这篇文章就是缘分.如果所说的内容不对,就请纠正.勿喷!!! 想要将两周的学习知识通过文字.通过代码.通过图片储备起来,以防自己那天思维短路 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 20145330第六周《Java学习笔记》
20145330第六周<Java学习笔记> . 这周算是很忙碌的一周.因为第六周陆续很多实验都开始进行,开始要准备和预习的科目日渐增多,对Java分配的时间不知不觉就减少了,然而第十和十一 ...
- 20145330第五周《Java学习笔记》
20145330第五周<Java学习笔记> 这一周又是紧张的一周. 语法与继承架构 Java中所有错误都会打包为对象可以尝试try.catch代表错误的对象后做一些处理. 使用try.ca ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- JavaWeb学习之三层架构实例(三)
引言 通过上一篇博客JavaWeb学习之三层架构实例(二)我们基本上已经实现了对学生信息列表的增删改查操作(UI除外),但是不难看出,代码冗余度太高了,尤其是StudentDao这个类,其中的增删改查 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
随机推荐
- WPF 获取 ListView DataTemplate 中控件值
原文:WPF 获取 ListView DataTemplate 中控件值 版权声明:本文为博主原创文章,未经博主允许可以随意转载 https://blog.csdn.net/songqingwei19 ...
- WPF与缓动(三) 指数缓动
原文:WPF与缓动(三) 指数缓动 WPF与缓动(三) 指数缓动 ...
- BZOJ 3594 Scoi2014 方波波麦田 树阵
标题效果:给定一个序列,能够选择k次每个部分的数量和在范围内+1,寻求操作后LIS最大值 我的做法是不是一个标准的解决方案. ..5E为什么跑飞的复杂性. . . 首先,显而易见的结论是,我们选择k右 ...
- vagrant up default: Warning: Authentication failure. Retrying...的一些解决办法
vagrant up default: Warning: Authentication failure. Retrying...的一些解决办法 一般看到这个信息时,虚拟机已经启动成功,可以中断命令后v ...
- github page的两种类型
1. 什么是Github ? Github 官方主页 简单说,Github是一个基于git的社会化代码分享社区. 你可以在Github上创建免费的远程仓库(remote repository),分享你 ...
- 【转】微信退款时候报”请求被中止: 未能创建 SSL/TLS 安全通道“或”The request was aborted: Could not create SSL/TLS secure channel“的错误
退款测试在我本机测试一切都是正常的,但是发布到了服务器就报这样的一个错啦 但是无论百度或者google或者bing,你能够搜索到的结果都很类似,综合起来就是加这样一些代码,如下 ServicePoin ...
- Android零基础入门第24节:自定义View简单使用
原文:Android零基础入门第24节:自定义View简单使用 当我们开发中遇到Android原生的组件无法满足需求时,这时候就应该自定义View来满足这些特殊的组件需求. 一.概述 很多初入Andr ...
- C# mysql set和enum属性字段的读取和添加
1.使用Navicat for Mysql设置set和enum属性字段: a.enum类型 b.set类型 enum类型在创建表时需要设置初始值,在如图所示的位置设置. 2.C#读取和添加数据 a.e ...
- Lua中的协同程序 coroutine(转)
Lua中的协程和多线程很相似,每一个协程有自己的堆栈,自己的局部变量,可以通过yield-resume实现在协程间的切换.不同之处是:Lua协程是非抢占式的多线程,必须手动在不同的协程间切换,且同一时 ...
- xen学习(一)
添加镜像源 [root@xen xen]# cat /etc/yum.repos.d/xen.repo [xen] name=xenserver baseurl=http://mirrors.163. ...