配置文件:

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. 6.分析request_irq和free_irq函数如何注册注销中断(详解)

    上一节讲了如何实现运行中断,这些都是系统给做好的,当我们想自己写个中断处理程序,去执行自己的代码,就需要写irq_desc->action->handler,然后通过request_irq ...

  2. 安装Java语言的jdk,配置java环境变量

    一.windows 安装jdk win7 下载jdk: 地址   https://www.oracle.com/technetwork/java/javase/downloads/index.html ...

  3. Linux下编译、链接和装载

    ——<程序员的自我修养>读书笔记 编译过程 在Linux下使用GCC将源码编译成可执行文件的过程可以分解为4个步骤,分别是预处理(Prepressing).编译(Compilation). ...

  4. 牛客网剑指offer 二维数组的查找

    题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 解题思路 该题有很多种 ...

  5. Java 基础系列合集

    Java基础知识你知道多少? Java特性 Java三大特性:封装,继承,多态 Java 抽象类与接口 Java 浅拷贝和深拷贝 Java static和final Java 内部类.静态内部类.匿名 ...

  6. PHP7.27: object

    http://www.devshed.com/c/a/PHP/PHP-Services-Layers-Data-Mappers/ https://stackoverflow.com/questions ...

  7. MySQL and Sql Server:Getting metadata using sql script (SQL-92 standard)

    MySQL: use sakila; -- show fields from table_name; -- show keys from table_name; SELECT `REFERENCED_ ...

  8. 微信小程序 封装请求

    在写小程序的时候,每个JS文件都一大堆的请求,看得自己都眼花缭乱,下面看一下怎么对请求方法进行封装. 1,方法封装,在util文件夹下新建文件,创建request.js文件,工具文件,用于对方法封装) ...

  9. 在线客服兼容谷歌Chrome、苹果Safari、Opera浏览器的修改

    纵览全网提供的众多号称兼容多浏览器的自动收缩在线客服,其实只兼容了IE和FF两种,当遇到谷歌Chrome.苹果Safari.Opera浏览器时鼠标还没点到客服按钮就会自动缩回,实用效果完全打折 以下代 ...

  10. 【读书笔记】iOS-访问iPod媒体库

    iOS设备内部都有一个iPod媒体库,在这个媒体库中包含了音频和视频文件,它的来源主要是苹果公司的iTunes Store,现在苹果公司的iTunes Store内容很多,但能够下载到iPod媒体库的 ...