配置文件:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/blog
user=root
user=1234 properties文件里面通常存放的是Map,也就是键值对。

单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例

话说JDBC

Java通过JDBC连接数据库分为以下四步:
1.加载驱动
2.建立连接
3.使用Preparedstatement进行预编译或者使用statement对象
4.释放资源 Preparedstatement和Statement的比较:
a.首先Preparedstatement是预编译的,而Statement反之。
b.Preparedstatement支持批量处理,而Statement不行。
c.Preparedstatement相对于Statement可读性上良好
d.无论从哪个方面看Preparedstatement都比Statement要好(不相信的话可以自己写一个
小的图书管理系统或则其它的小项目都可以,一个用Preparedstatement一个用Statement进行对比
就知道了)
/**
单例模式
*/
package com.utils; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties; public class ConfigManager { /**之所以定义为静态的是因为静态修饰可直接调用,不需要实例化,直接类名.方法名即可调用
*/
private static ConfigManager config;
private static Properties props; private ConfigManager(){
props=new Properties(); } public static ConfigManager getInstance(){
if(config==null){
config=new ConfigManager();
}
return config;
} public static String getPropertis(String key){
try {
FileInputStream fis=new FileInputStream("src/db.properties");
props.load(fis);
return props.getProperty(key); } catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
} }

通过JDBC和数据库打交道

/**
* JDBC连接数据库
*/ package com.dao; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import com.utils.ConfigManager; public class BaseDao { Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
//与数据库建立连接
public boolean getConnection(){
String driver=ConfigManager.getInstance().getPropertis("driver");
String url=ConfigManager.getInstance().getPropertis("url");
String user=ConfigManager.getInstance().getPropertis("user");
String password=ConfigManager.getInstance().getPropertis("password");
try {
       //加载驱动
Class.forName(driver);
       //建立连接
conn=DriverManager.getConnection(url,user,password);
return true;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false; } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} } //所有查询方法的模板
public ResultSet select(String sql,Object[]obj){
getConnection();
try {
//使用Preparedstatement对象预编译sql
ps=conn.prepareStatement(sql);
for (int i = 0; i < obj.length; i++) {
ps.setObject(i+1,obj[i]);
}
rs=ps.executeQuery();
return rs;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} }
//所有增删改方法的模板
public int update(String sql,Object[]obj){
getConnection();
try {
ps=conn.prepareStatement(sql);
for (int i = 0; i < obj.length; i++) {
ps.setObject(i+1,obj[i]);
}
int lines=ps.executeUpdate();
return lines;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
} }
//释放资源
public boolean close(){
try {
if(!rs.isClosed()){
rs.close();
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace(); return false;
} try {
if(!ps.isClosed()){
ps.close();
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace(); return false;
} try {
if(!conn.isClosed()){
conn.close();
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace(); return false;
} return true;
} }

单例模式和JDBC的更多相关文章

  1. 单例模式获取JDBC连接

    package com.jdbc.test; import java.io.IOException; import java.io.InputStream; import java.sql.Conne ...

  2. 单例模式在JDBC数据库连接操作里的应用

    设计模式之单例模式一般应用在在数据库操作里,数据库操作就要常常创建实例,然后进行数据库操作,全部就能够 将数据库操作的方法.进行封装,然后採用单例模式进行设计,然后採用单例模式之后,就能够节约系统资源 ...

  3. JDBC:加载数据库驱动、连接数据库(详细讲解)

    加载数据库驱动: 1)由于Java是一个纯面向对象语言,任何事物在其中都必须抽象成类或者类对象,数据库也不例外,JDBC同样也把数据库抽象成面向对象的结构: 2)JDBC将整个数据库驱动器在底层抽象成 ...

  4. 东软实习<3>

    今天学习过程和小节 主要对多线程,单例模式以及jdbc进行了一些深入着重的学习, 还有就是学习了如何使用java操作HDFS 主要是对于一些继承调用的使用等 1.封装JDBC,自定义范型 2.反射,自 ...

  5. MyBatis实战之解析与运行

    本次所谈的原理仅仅只涉及基本的框架和核心代码,并不会全部都说到,比如关于MyBatis是如何解析XML文件和其他配置文件从而的到内容,还有就是JDBC如何使用,关于JDBC如何使用,可以参考我的这篇博 ...

  6. Spring(三)之Ioc、Bean、Scope讲解

    Spring容器是Spring Framework的核心.容器将创建对象,将它们连接在一起,配置它们,并管理从创建到销毁的整个生命周期.Spring容器使用DI来管理组成应用程序的组件.这些对象称为S ...

  7. JAVA关键技术

    通用技术方面 MVC 1)概念 MVC是一个架构模式,它分离了表现与交互.它被分为三个核心部件:模型-model.视图-view.控制器-controller 2)工作原理 所有的终端用户请求被发送到 ...

  8. 封装jdbc 单例模式的应用

    实现增删该查的jdbc封装 import java.io.IOException; import java.io.InputStream; import java.sql.Connection; im ...

  9. jdbc数据库连接过程及驱动加载与设计模式详解

    首先要导入JDBC的jar包:接下来,代码:Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就 ...

随机推荐

  1. C# 基础运算符及运算

    本节主要讲述运算符的分类及其实际运用 运算符 分类 符号 解释 优先级 算数 ++  -- 加加(加1)  减减(减1) 由高到低,即执行顺序由上到下(圆括号的优先级最高) *  /  % 乘  除  ...

  2. mysql实践总结

    首先介绍mysql的安装和基本使用.进阶操作.讲解mysql的导入导出和自动备份,然后介绍安全模式修改密码和mysql的全文本搜索功能,最后记录了个人使用mysql中遇到的问题集,闲暇时我也会多看几次 ...

  3. Java容器类源码分析之Iterator与ListIterator迭代器(基于JDK8)

    一.基本概念 迭代器是一个对象,也是一种设计模式,Java有两个用来实实现迭代器的接口,分别是Iterator接口和继承自Iterator的ListIterator接口.实现迭代器接口的类的对象有遍历 ...

  4. 【Java】模拟Sping,实现其IOC和AOP核心(一)

    在这里我要实现的是Spring的IOC和AOP的核心,而且有关IOC的实现,注解+XML能混合使用! 参考资料: IOC:控制反转(Inversion of Control,缩写为IoC),是面向对象 ...

  5. 最新版本elasticsearch本地搭建入门篇

    最新版本elasticsearch本地搭建入门篇 项目介绍 最近工作用到elasticsearch,主要是用于网站搜索,和应用搜索. 工欲善其事,必先利其器. 自己开始关注elasticsearch, ...

  6. SOA、SOAP、RFC、RPC、IETF

    SOA: 全称:Servuce - oriented Architecture 说明:面向服务架构 就是说将软件按照功能设计成一个个服务,这些服务用标准的方式定义接口.并通过标准的协议进行调用. SO ...

  7. SVN SVN合并(Merge)与拉取分支(Branch/tag)操作简介

    SVN合并(Merge)与拉取分支(Branch/tag)操作简介 合并(Merge) 例子:把对feature_branch\project_name_v3.3.7_branch的修改合并到deve ...

  8. 排错-安装SQl 2008“为SQL Server代理服务提供的凭据无效的解决方法

    安装SQl 2008“为SQL Server代理服务提供的凭据无效的解决方法 by:授客 QQ:1033553122 在Windows Server 2008安装SQL Server 2008出现的问 ...

  9. 原来这样就可以开发出一个百万量级的Android相机

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由QQ空间开发团队发表于云+社区专栏 最近我负责开发了一个跟Android相机有关的需求,新功能允许用户使用手机摄像头,快速拍摄特定尺寸 ...

  10. Android 云之声离线语音合成

    离线语音解析 public class SpeechUtilOffline implements TTSPlayerListener { public static final String appK ...