Dao - 提供接口

DaoImpl - 实现

DaoFactory - 工厂模式获取实现

DaoExcetpion - jdbc异常处理 实现runtime exception类即可

TestDemo - 主函数

User - bean

daoconfig.properties - 配置文件

package cn.itcast.user;

public interface Dao {
public User findById(int id);
}
package cn.itcast.user;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import cn.itcast.JdbcUtils; public class DaoImpl implements Dao { @Override
public User findById(int id) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
User user=null;
String sql = "select * from t_user where id=?";
try{
conn = JdbcUtils.getConnection();
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
rs=ps.executeQuery();
while(rs.next()){
user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("username"));
user.setPassword(rs.getString("password"));
}
}catch(SQLException e){
throw new DaoExcetpion(e.getMessage(),e);
}finally{
JdbcUtils.free(rs, ps, conn);
} return user;
} }
package cn.itcast.user;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; public class DaoFactory {
private static Dao dao = null;
private static DaoFactory intance = new DaoFactory(); private DaoFactory() { try {
Properties prop = new Properties();
InputStream inStream = DaoFactory.class.getClassLoader().getResourceAsStream("daoconfig.properties");
prop.load(inStream);
String userDaoClass = prop.getProperty("userDaoClass");
dao=(Dao)Class.forName(userDaoClass).newInstance();
} catch (Exception e) {
// TODO Auto-generated catch block
throw new ExceptionInInitializerError(e);
}
} public static DaoFactory getInstance() {
return intance;
} public Dao getUserDao() {
return dao;
}
}
package cn.itcast.user;

public class TestDemo {

	public static void main(String[] args) {
// TODO Auto-generated method stub
// Dao dao = new DaoImpl();
Dao dao = DaoFactory.getInstance().getUserDao();
User user = dao.findById(2);
System.out.println(user.getId());
System.out.println(user.getName());
} }

//配置文件

userDaoClass=cn.itcast.user.DaoImpl

java_jdbc_3层 解耦的更多相关文章

  1. Spring.NET在MVC中实现业务层和UI层解耦

    最近在项目中用到了Spring.NET,使用它来实现业务层和UI层解耦.使用过程中难免遇到问题,现把遇到的一些问题整理出来,留作笔记. 使用的开发工具是vs2017,.netframework 4.6 ...

  2. 利用工厂模式实现serviec层和dao层解耦

    利用工厂模式实现serveice和dao层的解耦,这样就可以不用在service层实例化dao层的对象,当dao层代码发生改变的时候(数据库实现发生改变)直接修改配置文件就不用改变service层的代 ...

  3. 谈谈service层在mvc框架中的意义和职责

    mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层设计, ...

  4. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十一) 代码重构使用反射工厂解耦

    前言 自从此博客发表以及代码开源以来,得到了许多人的关注.也没许多吧,反正在我意料之外的.包括几位大牛帮我做订阅号推广,真的很感谢他们.另外,还有几个高手给我提了一些架构上的问题.其实本身这个项目是没 ...

  5. 浅谈MVC中的service层(转)

    概述 mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层 ...

  6. [译] 关于 SPA,你需要掌握的 4 层 (1)

    此文已由作者张威授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 我们从头来构建一个 React 的应用程序,探究领域.存储.应用服务和视图这四层 每个成功的项目都需要一个清晰 ...

  7. Java Web学习总结(30)——Service层在MVC框架中的意义和职责

    mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层设计, ...

  8. Service层在MVC框架中的意义和职责

    https://blog.csdn.net/u012562943/article/details/53462157 mvc框架由model,view,controller组成,执行流程一般是:在con ...

  9. 【腾讯Bugly干货分享】基于RxJava的一种MVP实现

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57bfef673c1174283d60bac0 Dev Club 是一个交流移动 ...

随机推荐

  1. List<HashMap>和HashMap

      例如select查询出的是学号.姓名,比如查出符合条件的是学号是0810的小红,学号是0811的小明,组织起来如下:  list.add(hashmap1);list.add(hashmap2); ...

  2. J2EE的若干问题

    1.问题:jsp中out.println页面显示不出换行效果.例如: out.println("唱歌"); out.println("跳舞"); 以上代码的结果 ...

  3. java中的final关键字

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下 ...

  4. less命令

    less命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览.用less命令显示文件时,用PageUp键向上翻页,用P ...

  5. POJ 1155-TELE(树形背包)

    题意:电视台发送信号给很多用户,每个用户(叶子节点)有愿意出的钱,电视台经过的路线都有一定费用,求电视台不损失的情况下最多给多少用户发送信号. 分析:问题与以i为根节点的子树所包含的叶子数 #incl ...

  6. codeforces 671B Robin Hood 二分

    题意:有n个人,每个人a[i]个物品,进行k次操作,每次都从最富有的人手里拿走一个物品给最穷的人 问k次操作以后,物品最多的人和物品最少的人相差几个物品 分析:如果次数足够多的话,最后的肯定在平均值上 ...

  7. 如何把本机Sql Sever数据库转移到虚拟主机sql数据库

    不少站长的网站都是asp+access的网站  因为操作access数据库的网站非常简单,甚至你对数据库不懂都可以 但如果是mssql数据库的网站,有些新手朋友就不知道该怎么弄了  在这里给大家做个简 ...

  8. Her and his blog

    Tonight, I read localhost8080 and some of her husband m67's blog. I found they are so geek and reall ...

  9. Guide to make CentOS 7 the perfect desktop

    原文地址:  http://www.dedoimedo.com/computers/fedora-pimp.html My original review of CentOS 7 was less e ...

  10. hdu 3617 Happy 2009

    Happy 2009 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...