1. 程式人生 > >JAVA 資料庫操作工具類----mysql

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