老师给的jdbc连接的例子,封装之后
2017-08-13 11:08
330 查看
下面是一个封装数据库操作的例子:(三个类,两个文件,三个jar包)
(一)
第一个jar包:驱动为从网上下载的某一数据库
的jdbc驱动程序(例如:E:\安装包\mysql-connector-java-5.1.43\mysql-connector-java-5.1.43-bin.jar)
第二个jar包:E:\QQFile\853340603\FileRecv\MobileFile\lib\lib\commons-logging-1.0.4.jar
common-logging是apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging,
common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple
logger的简单实现,但是功能很弱。所以使用common-logging,通常都是配合着log4j来使用。使用它的好处就是,代码依赖是common-logging而非log4j,
避免了和具体的日志方案直接耦合,在有必要时,可以更改日志实现的第三方库。
第三个jar包:log4j-1.2.16.jar
log4j主要是输出你操作的过程,比如:在一个hibernate框架的程序里面,如果你设置使用log4j输入信息的话,可以输出数据库Driver、用户、密码、Sql语句等等,方便你检查错误
日志记录,对于企业应用软件来说很有必要,他记录了对软件的每一次操作,以及当软件发生异常时的记录。对于开发人员后期的维护,提供了有用的第一手资料。
日志嘛。虽然 System.out.println()
也能起到调试的作用,但很不方便。比如说,有一个调试信息输出,我只要测试一下就不用了,这样我们得把这一行删掉,如果下次又想用了,那还得再加上去。
如果是用日志工具的话,日志拥有一个级别的概念,我们不需要的话只需要在一个地方把日志的输出级别调高,那那些低级别的日志就不会输出了。如果以后我又想再看看那些日志的话,再把级别调低就可以了
它是一种调试的辅助工具,
(二)
第一个文件:日志文件:log4j.properties(为什么后缀是.Properities
Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集。不过Properties有特殊的地方,就是它的键和值都是字符串类型。
Properties中的主要方法
(1)load(InputStreaminStream)
这个方法可以从.properties属性文件对应的文件输入流中,加载属性列表到Properties类对象。如下面的代码:
Properties pro =new Properties();
FileInputStreamin = new FileInputStream("a.properties");
pro.load(in);
in.close();
(2)store(OutputStreamout, String comments)
这个方法将Properties类对象的属性列表保存到输出流中。如下面的代码:
FileOutputStreamoFile = new FileOutputStream(file, "a.properties");
pro.store(oFile,"Comment");
oFile.close();
如果comments不为空,保存后的属性文件第一行会是#comments,表示注释信息;如果为空则没有注释信息。
注释信息后面是属性文件的当前保存时间信息。
(3)getProperty/setProperty
这两个方法是分别是获取和设置属性信息。)
不知道可不可以为空,里面的数据是每次执行加载上的吗
第二个文件:datainfo.properties 数据库配置文件;链接数据库需要用到的
DRIVER=oracle.jdbc.driver.OracleDriver
DBURL=jdbc:oracle:thin:@localhost:1521:
DBNAME=ORCL
USERNAME=scott
USERPWD=tiger
(三)
第一个类:工具类:放在工具包中;用于读取配置文件;
packagecom.neuedu.util;
/**
* 2012-8-3
上午08:58:23
* @author zhangjun
*/
importjava.io.FileNotFoundException;
importjava.io.IOException;
import java.util.Properties;
importorg.apache.commons.logging.Log;
importorg.apache.commons.logging.LogFactory;
/**
* @author
* 2013-7-28
上午08:58:23
*
这个类主要作用是读取配置文件
*/
public classPropertyUtil {
private Properties prop;
private static PropertyUtil propertyUtil =null;
private Log logger =LogFactory.getLog(PropertyUtil.class);
//单例模式
private PropertyUtil() {
}
public static PropertyUtil getInstance() {
if (propertyUtil == null) {
propertyUtil = newPropertyUtil();
}
return propertyUtil;
}
/**
* 读取服务器配置文件
*/
public Properties getProperty(String path){
if (logger.isDebugEnabled()) {
logger.debug("读取配置文件:" + path);
}
prop = new Properties();
//
BufferedInputStream in;
try {
//
in = newBufferedInputStream(new FileInputStream(path));
//
prop.load(in);
//在外部加载一个文件 datainfo.properties
prop.load(this.getClass().getClassLoader().getResourceAsStream(
"datainfo.properties"));
} catch (FileNotFoundException e) {
if (logger.isErrorEnabled()){
logger.error("找不到配置文件", e);
}
} catch (IOException e) {
if (logger.isErrorEnabled()){
logger.error("读取文件失败", e);
}
}
if (logger.isDebugEnabled()) {
logger.debug("读取配置文件成功");
}
return prop;
}
}
第二个类:DBManager.java
获取数据库连接,通过getconnection方法返回数据库连接conn
注意:自动提交的设置
packagecom.neuedu.db;
/**
* 2013-7-28
下午05:43:26
*
@author
*/
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importjava.util.Properties;
importorg.apache.commons.logging.Log;
importorg.apache.commons.logging.LogFactory;
importcom.neuedu.util.PropertyUtil;
/**
*
@author
管理数据库连接
*/
public
class DBManager {
private Properties
prop;
private String
path =
"src/datainfo.properties";
private PropertyUtil
propertyUtil;
private
static DBManager
dbManager =
null;
private Log
logger = LogFactory.getLog(DBManager.class);
private DBManager() {
}
public
static DBManager getInstance() {
if (dbManager
== null) {
dbManager =
new DBManager();
}
return
dbManager;
}
/**
* @return
与数据库进行连接
*/
public Connection getConnection()
{
if (propertyUtil
== null) {
propertyUtil = PropertyUtil.getInstance();
if (prop
== null) {
prop =
propertyUtil.getProperty(path);
if (logger.isInfoEnabled())
{
logger.info("读取数据库配置文件:
" +
path);
}
}
}
Connection conn = null;
try {
Class.forName(prop.getProperty("DRIVER"));
conn = DriverManager.getConnection(prop.getProperty("DBURL")
+ prop.getProperty("DBNAME"),
prop.getProperty("USERNAME"),
prop.getProperty("USERPWD"));
conn.setAutoCommit(false);//
先这样简单自动提交,以后再业务层管理事务,就需要设置为false了
if (logger.isInfoEnabled())
{
logger.info("读取数据库配置文件成功!");
}
} catch (ClassNotFoundException e)
{
if (logger.isErrorEnabled())
{
logger.error("找不到数据库驱动!");
}
} catch (SQLException e) {
if (logger.isErrorEnabled())
{
logger.error("连接失败!");
}
}
return conn;
}
}
第三个类:JdbcTemplate.java
操作数据库,主要有查询和增加,修改,删除数据这几个,传入sql语句,和组参数,然后返回结果集合集或受影响的行数:
注意:在进行操作之前需要先注入数据库链接;将结果集中的一行数据封装到entiymapping,在query()函数中通过entitymapping将对象封装到集合中,返回结果集合
以上三个类为单利模式,值得学习
(一)
第一个jar包:驱动为从网上下载的某一数据库
的jdbc驱动程序(例如:E:\安装包\mysql-connector-java-5.1.43\mysql-connector-java-5.1.43-bin.jar)
第二个jar包:E:\QQFile\853340603\FileRecv\MobileFile\lib\lib\commons-logging-1.0.4.jar
common-logging是apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging,
common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple
logger的简单实现,但是功能很弱。所以使用common-logging,通常都是配合着log4j来使用。使用它的好处就是,代码依赖是common-logging而非log4j,
避免了和具体的日志方案直接耦合,在有必要时,可以更改日志实现的第三方库。
第三个jar包:log4j-1.2.16.jar
log4j主要是输出你操作的过程,比如:在一个hibernate框架的程序里面,如果你设置使用log4j输入信息的话,可以输出数据库Driver、用户、密码、Sql语句等等,方便你检查错误
日志记录,对于企业应用软件来说很有必要,他记录了对软件的每一次操作,以及当软件发生异常时的记录。对于开发人员后期的维护,提供了有用的第一手资料。
日志嘛。虽然 System.out.println()
也能起到调试的作用,但很不方便。比如说,有一个调试信息输出,我只要测试一下就不用了,这样我们得把这一行删掉,如果下次又想用了,那还得再加上去。
如果是用日志工具的话,日志拥有一个级别的概念,我们不需要的话只需要在一个地方把日志的输出级别调高,那那些低级别的日志就不会输出了。如果以后我又想再看看那些日志的话,再把级别调低就可以了
它是一种调试的辅助工具,
(二)
第一个文件:日志文件:log4j.properties(为什么后缀是.Properities
Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集。不过Properties有特殊的地方,就是它的键和值都是字符串类型。
Properties中的主要方法
(1)load(InputStreaminStream)
这个方法可以从.properties属性文件对应的文件输入流中,加载属性列表到Properties类对象。如下面的代码:
Properties pro =new Properties();
FileInputStreamin = new FileInputStream("a.properties");
pro.load(in);
in.close();
(2)store(OutputStreamout, String comments)
这个方法将Properties类对象的属性列表保存到输出流中。如下面的代码:
FileOutputStreamoFile = new FileOutputStream(file, "a.properties");
pro.store(oFile,"Comment");
oFile.close();
如果comments不为空,保存后的属性文件第一行会是#comments,表示注释信息;如果为空则没有注释信息。
注释信息后面是属性文件的当前保存时间信息。
(3)getProperty/setProperty
这两个方法是分别是获取和设置属性信息。)
不知道可不可以为空,里面的数据是每次执行加载上的吗
第二个文件:datainfo.properties 数据库配置文件;链接数据库需要用到的
DRIVER=oracle.jdbc.driver.OracleDriver
DBURL=jdbc:oracle:thin:@localhost:1521:
DBNAME=ORCL
USERNAME=scott
USERPWD=tiger
(三)
第一个类:工具类:放在工具包中;用于读取配置文件;
packagecom.neuedu.util;
/**
* 2012-8-3
上午08:58:23
* @author zhangjun
*/
importjava.io.FileNotFoundException;
importjava.io.IOException;
import java.util.Properties;
importorg.apache.commons.logging.Log;
importorg.apache.commons.logging.LogFactory;
/**
* @author
* 2013-7-28
上午08:58:23
*
这个类主要作用是读取配置文件
*/
public classPropertyUtil {
private Properties prop;
private static PropertyUtil propertyUtil =null;
private Log logger =LogFactory.getLog(PropertyUtil.class);
//单例模式
private PropertyUtil() {
}
public static PropertyUtil getInstance() {
if (propertyUtil == null) {
propertyUtil = newPropertyUtil();
}
return propertyUtil;
}
/**
* 读取服务器配置文件
*/
public Properties getProperty(String path){
if (logger.isDebugEnabled()) {
logger.debug("读取配置文件:" + path);
}
prop = new Properties();
//
BufferedInputStream in;
try {
//
in = newBufferedInputStream(new FileInputStream(path));
//
prop.load(in);
//在外部加载一个文件 datainfo.properties
prop.load(this.getClass().getClassLoader().getResourceAsStream(
"datainfo.properties"));
} catch (FileNotFoundException e) {
if (logger.isErrorEnabled()){
logger.error("找不到配置文件", e);
}
} catch (IOException e) {
if (logger.isErrorEnabled()){
logger.error("读取文件失败", e);
}
}
if (logger.isDebugEnabled()) {
logger.debug("读取配置文件成功");
}
return prop;
}
}
第二个类:DBManager.java
获取数据库连接,通过getconnection方法返回数据库连接conn
注意:自动提交的设置
packagecom.neuedu.db;
/**
* 2013-7-28
下午05:43:26
*
@author
*/
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importjava.util.Properties;
importorg.apache.commons.logging.Log;
importorg.apache.commons.logging.LogFactory;
importcom.neuedu.util.PropertyUtil;
/**
*
@author
管理数据库连接
*/
public
class DBManager {
private Properties
prop;
private String
path =
"src/datainfo.properties";
private PropertyUtil
propertyUtil;
private
static DBManager
dbManager =
null;
private Log
logger = LogFactory.getLog(DBManager.class);
private DBManager() {
}
public
static DBManager getInstance() {
if (dbManager
== null) {
dbManager =
new DBManager();
}
return
dbManager;
}
/**
* @return
与数据库进行连接
*/
public Connection getConnection()
{
if (propertyUtil
== null) {
propertyUtil = PropertyUtil.getInstance();
if (prop
== null) {
prop =
propertyUtil.getProperty(path);
if (logger.isInfoEnabled())
{
logger.info("读取数据库配置文件:
" +
path);
}
}
}
Connection conn = null;
try {
Class.forName(prop.getProperty("DRIVER"));
conn = DriverManager.getConnection(prop.getProperty("DBURL")
+ prop.getProperty("DBNAME"),
prop.getProperty("USERNAME"),
prop.getProperty("USERPWD"));
conn.setAutoCommit(false);//
先这样简单自动提交,以后再业务层管理事务,就需要设置为false了
if (logger.isInfoEnabled())
{
logger.info("读取数据库配置文件成功!");
}
} catch (ClassNotFoundException e)
{
if (logger.isErrorEnabled())
{
logger.error("找不到数据库驱动!");
}
} catch (SQLException e) {
if (logger.isErrorEnabled())
{
logger.error("连接失败!");
}
}
return conn;
}
}
第三个类:JdbcTemplate.java
操作数据库,主要有查询和增加,修改,删除数据这几个,传入sql语句,和组参数,然后返回结果集合集或受影响的行数:
注意:在进行操作之前需要先注入数据库链接;将结果集中的一行数据封装到entiymapping,在query()函数中通过entitymapping将对象封装到集合中,返回结果集合
以上三个类为单利模式,值得学习
相关文章推荐
- JAVA使用JDBC连接数据库做JSON封装和解析的例子
- JDBC连接数据库例子--一般,封装,单例模式封装
- 一个简单的jdbc连接封装
- java(JDBC连接数据库)[对PreparedStatement进行封装]
- [jdbc封装]许多种数据库的连接地址 ,也是怀旧的代码.
- 彻底封装JDBC操作MySQL的连接。
- JDBC连接的封装
- java(JDBC连接数据库)[完整版封装]
- mysql的jdbc驱动安装及jsp连接例子
- JDBC连接的一个小例子
- JDBC连接MySql数据库的简单例子
- jdbc链接mysql的第二个例子。使用properties文件存放连接信息。使用jar文件一个
- JDBC连接及一些例子
- 小博老师解析Java核心技术 ——JDBC数据库操作类封装
- 小博老师解析Java核心技术 ——JDBC数据库操作类封装
- Java使用JDBC连接Hive(新版本)API封装
- java(JDBC连接数据库)[完整版封装]
- 【J2EE】【2.JDBC】JDBC连接数据库(MariaDB,Mysql)(继续之前jee的登陆例子)
- 用VB生成DLL封装ASP代码一个例子:连接access数据库等
- java(JDBC连接数据库)[完整版封装]