常用公共类代码一之数据库的连接
在项目中,我们经常会写到一些公共的代码,来让开发人员调用,减少代码重复,下面,我就将一些常用到的公共类贴出来和大家分享!!
一、数据库的连接,常用的方式有直接将那些要连接的参数放到java类中、将连接参数放到Properties文件中或者放到XML文件中,下面一一为大家描述
1、直接连接:
普通的配置方式public static Connection getConnection(){Connection conn=null;try {Class.forName("com.mysql.jdbc.Driver");String url="jdbc:mysql://127.0.0.1:3306/xinyuandb";String username="root";String password="123456";conn=DriverManager.getConnection(url, username, password);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}
2、通过Properties文件创建连接,好处,很灵活,不用在代码里面进行更改
创建jdbc.properties文件
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://127.0.0.1\:3306/xinyuandb
username=root
password=123456
从properties文件中读取public static Connection getConnection(){Connection conn=null;Properties p=new Properties();try {//从当前线程加载p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.properties"));Class.forName(p.getProperty("driver"));conn=DriverManager.getConnection(p.getProperty("url"), p.getProperty("username"), p.getProperty("password"));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return conn;}
3、通过XML文件读取
创建jdbc.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<config>
<jdbc-config>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://127.0.0.1:3306/xinyuandb</url>
<username>root</username>
<password>123456</password>
</jdbc-config>
</config>
创建javaBean类
package com.common.db;
public class JdbcBean {
private String driver;
private String url;
private String username;
private String password;
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
创建XML解析类
package com.common.db;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class XmlConfigReader {private static XmlConfigReader instance;private JdbcBean bean=null;//调用构造函数进行XML文件解析private XmlConfigReader(){SAXReader reader=new SAXReader();try {Document doc=reader.read(Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.xml"));Element root=doc.getRootElement();Element first=root.element("jdbc-config");String driver=first.element("driver").getText();String url=first.element("url").getText();String username=first.element("username").getText();String password=first.element("password").getText();bean=new JdbcBean();bean.setDriver(driver);bean.setUrl(url);bean.setUsername(username);bean.setPassword(password);} catch (DocumentException e) {e.printStackTrace();}}public synchronized static XmlConfigReader getInstance(){if(instance==null){instance=new XmlConfigReader();}return instance;}public JdbcBean getJdbeanBean(){return bean;}}
// 从XML文件中读取配置取得同一Connection // static Connection conn=null; // static{ // JdbcBean jdbc=XmlConfigReader.getInstance().getJdbeanBean(); // try { // Class.forName(jdbc.getDriver()); // conn=DriverManager.getConnection(jdbc.getUrl(), jdbc.getUsername(),jdbc.getPassword()); // } catch (ClassNotFoundException e) { // e.printStackTrace(); // } catch (SQLException e) { // e.printStackTrace(); // } // } //从XML文件中读取配置 public static Connection getConnection(){ Connection conn=null; JdbcBean jdbc=XmlConfigReader.getInstance().getJdbeanBean(); try { Class.forName(jdbc.getDriver()); conn=DriverManager.getConnection(jdbc.getUrl(), jdbc.getUsername(),jdbc.getPassword()); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; }
有时候我们想取得Connection的单实例,又不会影响到其安全性,我们可以通过线程ThreadLocal来对Connection进行管理:
package com.common.db;import java.sql.Connection;/*** 线程管理* @author Administrator**/
public class ConnectionManager {//使用线程变量对Connection进行管理private static ThreadLocal<Connection> local=new ThreadLocal<Connection>();public static Connection getConnection(){Connection conn=local.get();if(conn==null){conn=DbUtil.getConnection();local.set(conn);}return conn;}public static void main(String[] args) {Connection conn1=ConnectionManager.getConnection();Connection conn2=ConnectionManager.getConnection();Connection conn3=DbUtil.getConnection();Connection conn4=DbUtil.getConnection();System.out.println(conn1==conn2);//trueSystem.out.println(conn3==conn4);//false}
}
这样,数据库操作的公共类基本上实现了,大家在项目中就可以进行调用了,当然,还有一些基本的流的关闭和事物的处理,代码如下:
public static void close(Connection conn) {if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}public static void close(Statement pstmt) {if (pstmt != null) {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}}public static void close(ResultSet rs ) {if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}}public static void beginTransaction(Connection conn) {try {if (conn != null) {if (conn.getAutoCommit()) {conn.setAutoCommit(false); //手动提交}}}catch(SQLException e) {}}public static void commitTransaction(Connection conn) {try {if (conn != null) {if (!conn.getAutoCommit()) {conn.commit();}}}catch(SQLException e) {}}public static void rollbackTransaction(Connection conn) {try {if (conn != null) {if (!conn.getAutoCommit()) {conn.rollback();}}}catch(SQLException e) {}}public static void resetConnection(Connection conn) {try {if (conn != null) {if (conn.getAutoCommit()) {conn.setAutoCommit(false);}else {conn.setAutoCommit(true);}}}catch(SQLException e) {}}
常用公共类代码一之数据库的连接相关推荐
- 用代码建立与数据库的连接 c#连sqlserver
用代码建立与数据库的连接 c#连sqlserver 步骤 导入命名空间 using System.Data.SqlClient; 获取连接字符串 获取方式 让visual连接sqlserver数据库_ ...
- java处理图片的所有类_JAVA处理图片常用公共类
//检测图片宽高 public static Map getPicWH(String imagePath) { Map mp = new HashMap(); File _file = new Fil ...
- C#连接达梦数据库基础功公共类
c#程序访问达梦数据库 1.准备数据库驱动 达梦数据库安装完成后路径一般为:C:\dmdbms 找到 C:\dmdbms\drivers\dotNet\DmProvider: 我选择为.net 4. ...
- 应用程序 mysql 连接_学生信息管理系统之四:实现应用程序与数据库的连接
我们通过JDBC实现Java应用程序与数据库的连接. 类ConnectionManagr完成与数据库的连接.关闭等基本操作. 1. 新建类文件ConnectionManagr.java,所属包为com ...
- mysql的配置以及后端数据库的连接
mysql配置 上次配置好了tomcat,现在已经可以进行后端的编写了,但是看了很久,毕设需要的后端凑个数据库就够了,所以剩下的就是配置mysql了,前面听朋友说配置tomcat挺麻烦的,但是仔细看看 ...
- Python MySQL数据库的连接以及基本操作
Python MySQL数据库的连接以及基本操作 一.数据库的连接 1.直接连接 2.连接池连接 二. 数据库的基本操作 1.执行函数 2.创建数据表 3.删除表 4.插入函数 6.删除函数 7.状态 ...
- 常用公共代码二之分页代码的实现
在项目中,我们经常会写到一些公共的代码,来让开发人员调用,减少代码重复,下面,我就将一些常用到的公共类贴出来和大家分享!! 二.分页代码实现:在项目中,分页是一个项目中必不可少的,它可以防止我们从数据 ...
- 【学习笔记】JDBC:java提供的专门操纵数据库的API JDBC驱动程序的类型 JDBC常用的类与接口
JDBC技术 JDBC的全称是Java DataBase Connectivity,是一套面向对象的应用程序接口,指定了统一的访问各种关系型数据库的标准接口,JDBC是一种底层的API,因此访问数据库 ...
- java常用的接口和类的说明,Java程序连接数据库的常用的类和接口介绍
编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中 ...
最新文章
- 土豆上的小霉菌引发百万人死亡和逃难,却造就全球7千万后裔
- 孩子斗图老失败,多半是没看这篇博客
- aws sqs_在Spring中将AWS SQS用作JMS提供程序
- Spring REST:异常处理卷。 1个
- Could not load oracle/sql/converter_xcharset/lx20354.glb.
- [转载] 05 Numpy排序搜索计数及集合操作
- 选择排序SelectSort
- Linux 加入域的那些事儿!
- 2022版全国各地mapinfo格式电子地图及mapinfo二次开发
- selenium模拟登陆LinkedIn
- python 抖音短视频 去水印_如何去除抖音快手等短视频平台的水印?(工具+原理)...
- 华为笔试——C++平安果dp算法
- public static void main解释
- dva的用法_dva基本用法
- 戴尔灵越系列服务器是什么,戴尔灵越系列哪个好-2021戴尔灵越系列型号选购推荐...
- html 禁止触摸事件,html5的触摸事件
- 海底光缆是如何铺设出来的?
- 酒店市场消费趋势洞察报告
- 人口密度修正后的全球疫情热力图,看各国疫情严重程度
- 机器人对话常用语模板_世界首个机器人观音在岛国问世,请问AI开光还会远吗?...