JAVA 資料庫操作工具類----mysql
封裝了一個JAVA操作mysql的工具類,如果有需要的,可以直接使用。
1、MysqlHelper類,包括對資料庫的CRUD操作,其中查詢有單記錄返回和多記錄返回。另外,我使用了反射封裝類,希望和大家多多交流。
/**
* 資料庫操作類,包括增刪改查
* @author yangliucheng
* @serialData 2015-3-25
* @category class of mysql operation
* @version v1.0
*/
class mysqlHelper
{
//載入驅動
private final String DRIVER = "com.mysql.jdbc.Driver" ;
//定義資料庫賬號
private final String USERNAME = "root";
//定義資料庫密碼
private final String PASSWORD = "root";
//訪問的地址
private final String URL = "jdbc:mysql://localhost:3306/smart_home";
//定義資料庫的連線
private Connection connection;
//定義sql語句的執行物件
private PreparedStatement pStatement;
//定義查詢返回的結果集合
private ResultSet resultset;
public mysqlHelper()
{
try {
Class.forName(DRIVER);//註冊驅動
connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);//定義連線
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
/**
* 完成對資料庫的增刪改操作
* @param sql語句
* @param 傳入的佔位符,List集合
* @return SQL語句執行成功返回true,否則返回false
* @throws SQLException
*/
public boolean addDeleteModify(String sql,List<Object>params) throws SQLException
{
int result = -1;//設定為
pStatement = connection.prepareStatement(sql); //填充佔位符
int index = 1; //從第一個開始新增
if(params != null && !params.isEmpty())
{
for(int i = 0;i<params.size();i++)
{
pStatement.setObject(index++,params.get(i));//填充佔位符
}
}
result = pStatement.executeUpdate();//執行成功將返回大於0的數
return result>0 ? true : false;
}
/**
* 資料庫查詢操作,返回單條記錄
* @param sql語句
* @param 傳入的佔位符
* @return 返回Map集合型別,包含查詢的結果
* @throws SQLException
*/
public Map<String,Object> returnSimpleResult(String sql,List<Object>params) throws SQLException
{
Map<String, Object> map = new HashMap<String, Object>();
int index = 1;//從1開始設定佔位符
pStatement = connection.prepareStatement(sql);
if(params != null && !params.isEmpty()) /*判斷引數是否為空*/
{
for(int i = 0;i<params.size();i++) /*迴圈填充佔位符*/
{
pStatement.setObject(index++, params.get(i));
}
}
resultset = pStatement.executeQuery(sql);
/* 將查詢結果封裝到map集合*/
ResultSetMetaData metaDate = resultset.getMetaData();//獲取resultSet列的資訊
int columnLength = metaDate.getColumnCount();//獲得列的長度
while(resultset.next())
{
for(int i = 0;i<columnLength;i++)
{
String metaDateKey = metaDate.getColumnName(i+1);//獲得列名
Object resultsetValue = resultset.getObject(metaDateKey);//通過列名獲得值
if(resultsetValue == null)
{
resultsetValue = "";//轉成String型別
}
map.put(metaDateKey, resultsetValue);//新增到map集合(以上程式碼是為了將從資料庫返回的值轉換成map的key和value)
}
}
return map;
}
/**
* 查詢資料庫,返回多條記錄
* @param sql語句
* @param 佔位符
* @return list集合,包含查詢的結果
* @throws SQLException
*/
public List<Map<String,Object>> returnMultipleResult(String sql,List<Object>params) throws SQLException
{
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
//填充佔位符
int index = 1;
pStatement = connection.prepareStatement(sql);
if(params != null && !params.isEmpty())
{
for(int i = 0;i<params.size();i++)
{
pStatement.setObject(index++, params.get(i));
}
}
//執行SQL語句
resultset = pStatement.executeQuery();
//封裝resultset成map型別
ResultSetMetaData metaDate = resultset.getMetaData();//獲取列資訊,交給metaDate
int columnlength = metaDate.getColumnCount();
while(resultset.next())
{
Map<String, Object> map = new HashMap<String, Object>();
for(int i = 0;i<columnlength;i++)
{
String metaDateKey = metaDate.getColumnName(i+1);//獲取列名
Object resultsetValue = resultset.getObject(metaDateKey);
if(resultsetValue == null)
{
resultsetValue = "";
}
map.put(metaDateKey, resultsetValue);
}
list.add(map);
}
return list;
}
/**
* 應用反射機制返回單條記錄
* @param sql語句
* @param 佔位符
* @param javabean類,這裡我用的是(SmartHome_mysql.class)
* javabean,我理解的是一個高度封裝元件,成員為私有屬性,只能
* 通過set/get方法賦值和取值
* @return 泛型
* @throws SQLException
*/
public <T> T returnSimpleResult_Ref(String sql,List<Object>params,Class<T> tJavabean) throws Exception
{
T tResult = null;
int index = 1;
pStatement = connection.prepareStatement(sql);
if(params != null && !params.isEmpty())
{
for(int i = 0;i<params.size();i++)
{
pStatement.setObject(index++, params.get(i));
}
}
resultset = pStatement.executeQuery(sql);
//封裝resultset
ResultSetMetaData metaData = resultset.getMetaData();//獲得列的資訊
int columnLength = metaData.getColumnCount();//獲得列的長度
while(resultset.next())//迴圈取值
{
tResult = tJavabean.newInstance();//通過反射機制建立一個例項
for(int i = 0;i<columnLength;i++)
{
String metaDateKey = metaData.getColumnName(i+1);
Object resultsetValue = resultset.getObject(metaDateKey);
if(resultsetValue == null)
{
resultsetValue = "";
}
//獲取列的屬性,無論是公有。保護還是私有,都可以獲取
Field field = tJavabean.getDeclaredField(metaDateKey);
field.setAccessible(true);//開啟javabean的訪問private許可權
field.set(tResult, resultsetValue);//給javabean對應的欄位賦值
}
}
return tResult;
}
/**
* 通過反射機制訪問資料庫,並返回多條記錄
* @param sql語句
* @param 佔位符
* @param javabean,會執行javabean類裡面的toString方法
* @return
* @throws Exception
*/
public <T> List<T> returnMultipleResult_Ref(String sql,List<Object>params,Class<T> tJavabean) throws Exception
{
List<T> list = new ArrayList<T>();
int index = 1;
pStatement = connection.prepareStatement(sql);
if(params != null && !params.isEmpty())
{
for(int i = 0;i<params.size();i++)
{
pStatement.setObject(index, params.get(i));
}
}
resultset = pStatement.executeQuery(sql);
//封裝resultset
ResultSetMetaData metaData = resultset.getMetaData();//取出列的資訊
int columnLength = metaData.getColumnCount();//獲取列數
while(resultset.next())
{
T tResult = tJavabean.newInstance();//通過反射機制建立一個物件
for(int i = 0;i<columnLength;i++)
{
String metaDataKey = metaData.getColumnName(i+1);
Object resultsetValue = resultset.getObject(metaDataKey);
if(resultsetValue == null)
{
resultsetValue = "";
}
Field field = tJavabean.getDeclaredField(metaDataKey);
field.setAccessible(true);
field.set(tResult, resultsetValue);
}
list.add(tResult);
}
return list;
}
/**
* 注意在finally裡面執行以下方法,關閉連線
*/
public void closeconnection()
{
if(resultset != null)
{
try {
resultset.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(pStatement != null)
{
try {
pStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection != null)
{
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
2、javabean類
package com.example.mysql;
import java.io.Serializable;
public class SmartHome_mysql implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
/* 資料庫欄位,更具自己的需要而設定(必須和你資料庫中的欄位一樣,需要查什麼,就寫什麼),並生成set,get,toString方法 */
private int lightNo;
private String lightName;
private String lighPosition;
@Override
public String toString() {
return "SmartHome_mysql [lightNo=" + lightNo + ", lightName="
+ lightName + ", lighPosition=" + lighPosition + "]";
}
public int getLightNo() {
return lightNo;
}
public void setLightNo(int lightNo) {
this.lightNo = lightNo;
}
public String getLightName() {
return lightName;
}
public void setLightName(String lightName) {
this.lightName = lightName;
}
public String getLighPosition() {
return lighPosition;
}
public void setLighPosition(String lighPosition) {
this.lighPosition = lighPosition;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}
3、測試
public class AndroidServer {
public static void main(String[] args) {
// TODO Auto-generated method stub
mysqlHelper mysql = new mysqlHelper();
String sql = "select * from smart";
// List<Object> params = new ArrayList<Object>();
// params.add(1);
try {
SmartHome_mysql shmysql = mysql.returnSimpleResult_Ref(sql, null, SmartHome_mysql.class);
System.out.println(shmysql);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
mysql.closeconnection();
}
}
}
4、我這裡生成了一個幫助文件,需要的朋友可以在以下地址下載:
工具類
相關推薦
JAVA 資料庫操作工具類----mysql
封裝了一個JAVA操作mysql的工具類,如果有需要的,可以直接使用。 1、MysqlHelper類,包括對資料庫的CRUD操作,其中查詢有單記錄返回和多記錄返回。另外,我使用了反射封裝類,希望和大家多多交流。 /** * 資料庫操作類,包括增刪改查 *
java 時間操作工具類
時間操作工具類CalendarUtil 裡面包含方法有: 獲取當前時間getInstance 字串按照格式轉換成時間strToDate 時間格式化dateToStr 獲取當天零點getSame
Java檔案操作工具類FileUtils
package com.suobei.xinzhiying.base.utils.file; import com.suobei.xinzhiying.base.result.ResponseMap; import com.suobei.xinzhiying.base.utils.aliy
對JAVA資原始檔操作工具類
package com.kkmall.risk.common.utils; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import jav
Mysql資料庫實用工具類--含單例模組
繼前兩章的資料庫工具類不斷完善,現在加進去單例模式,程式碼都是在我這邊執行好的,可以直接拿去執行。 這些工具類都是特別基礎的,建議好好看看,對於初學者學習後面的pdo和封裝會有特別好的效果作用。 <?php header('content-type:text/html;charset=
Stoker的Java學習之封裝資料庫連線工具類與commons-dbutils
Java學習之封裝資料庫連線工具類與commons-dbutils 一.封裝資料庫連結工具類 public class JDBCUitl { // 宣告連結 private static Connection connection; // 註冊驅動 st
整理的關於Java對mongodb進行的CURD操作工具類及原始碼
package com.iceter.DataBase; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.bson.Document; import org.bson.conversi
php的mysql操作工具類pdo和mysqli
從php7開始mysql擴充套件庫已經被全面移除,原因暫不清楚,官方推薦我們使用mysqli和pdo,這次就針對pdo和mysqli分享下我的兩個工具類 1 PDO的mysql操作工具類 這種方式已經用的越來越多了,pdo使用面向物件的方式操作資料庫,pdo是很多人都比較
Access資料庫操作,Mdb檔案操作工具類,UCanAccess使用
Access資料庫操作,Mdb檔案操作工具類,UCanAccess使用 ================================ ©Copyright 蕃薯耀 2018年12月27日 http://fanshuyao.iteye.com/
JAVA FileUtils(檔案讀寫以及操作工具類)
轉別人的合併的連結 //https://www.cnblogs.com/chenhuan001/p/6575053.html //https://blog.csdn.net/lovoo/article/details/77899627 第一個連結找不到了作者看見了說一下我給你上鍊接
java:陣列操作工具類 java.util.Arrays包 主要方法詳解
轉載自:https://www.cnblogs.com/dengyungao/p/7525067.html java:陣列操作工具類 java.util.Arrays包 主要方法詳解 Arrays類位於Java.util包下,是一個對陣列操作的工具類,現將Arrays類中的方法做一個總結(J
Java常用工具類封裝——String操作工具類
專案中經常需要用到String的一些操作,結合看到的一些前人的工具類抽取,編寫了如下針對String的常用操作的工具類,供大家參考。 package com.mkyong.common; import java.util.ArrayList; import
java--DBUtils資料庫操作工具包
O-R Mapping簡介 什麼是O-R Mapping Object(物件)來對映Ralation(關係,表) 常用O-R Mapping對映工具 Hibernate Commons DbUtils(只是對JDBC簡單封裝) 簡介 common
Java 連線資料庫的工具類
用jdbc連線mysql資料庫的工具類:做到連線資料庫,只需要修改配置檔案的資料庫名,自己資料庫的使用者名稱和密碼,其他不用修改,測試類已經寫好。需要的jar包:junit-4.7.jar 和jdbc的驅動包:自己在網上可以免費下載一:java程式碼package cn.lu
Java的Excel檔案操作工具類,包括讀、寫、合併等功能
一、直接上程式碼: package com.cycares.crm.utils.ExcelUtil; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputS
java的Date時間操作工具類(很全)
java中對時間操作的工具類,直接複製程式碼即可,很全很詳細,一定有你想要的!!! package com.tx.framework.core.util; import java.beans.PropertyEditorSupport; import ja
Java常用工具類封裝——連線資料庫的工具類
資料庫操作工具類,供大家參考。 package com.itjh.javaUtil; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement
MySQL解壓版本安裝及Navicat資料庫操作工具安裝
一、MySQL的下載 2,解壓下載檔案到你想要安裝MySQL的路徑。 二、MySQL的安裝 1,命令安裝。使用cd命令到解壓目錄,使用:mysqld -install安裝MySQL。 2,建立data目錄,使用命令:mysqld --initialize-in
Java AES 加密工具類
dom .com 生成器 ogg bytes commons level result exc package com.microwisdom.utils; import java.security.NoSuchAlgorithmException; import ja
java的Arrays工具類
copy false string range lis 比較 jdk util 3.4 1年多了,jdk還不是很熟,補補。 package lhy.core.util; import java.util.Arrays; import java.util.Lis