java jdbc 增刪改封裝_JAVA JDBC 常規增刪改查簡單封裝

JAVA JDBC 常規增刪改查簡單封裝,可滿足大多基本要求

作用:

1,?查詢列表是直接返回List對象,不必再遍歷;

2, 單條查詢直接返回對象;

3, 執行sql僅需一個方法搞定;

package com.Main.Tools;

import com.Main.DB.MySql.DBUtil;

import java.sql.*;

import java.util.ArrayList;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

* @Description: JDBC輔佐工具類

* @author: Adobe Chow

* @date: 2018/12/29 16:02

* @Copyright: www.winshang.com Inc. All rights reserved.

*/

public class SqlUtils {

private static final String LogName = "SqlUtils----> ";

/**

* 執行sql

* @param conn

* @param sql

* @param args

* @throws SQLException

*/

public static void execute(Connection conn,String sql,Object ...args) throws SQLException {

PreparedStatement ptmt = null;

ptmt = conn.prepareStatement(sql);

String para = setParam(ptmt,args);

System.out.println(LogName+"sql: "+sql);

System.out.println(LogName+"參數: "+para);

ptmt.execute();

ptmt.close();

System.out.println(LogName+"執行成功!");

}

/**

* 查詢列表

* @param conn

* @param sql

* @param args

* @return

* @throws SQLException

*/

public static List> findList(Connection conn,String sql,Object...args) {

List> list = new ArrayList<>();

PreparedStatement ptmt = null;

try {

ptmt = conn.prepareStatement(sql);

System.out.println(LogName+"sql: "+sql);

String para = setParam(ptmt,args);

System.out.println(LogName+"sql: "+sql);

System.out.println(LogName+"參數: "+para);

ResultSet resultSet = ptmt.executeQuery();

ResultSetMetaData rsmd=resultSet.getMetaData();

while (resultSet.next()){

Map map = new HashMap<>();

for(int i=0;i

String columnLabel=rsmd.getColumnLabel(i+1);

Object columnValue=resultSet.getObject(columnLabel);

map.put(columnLabel, columnValue);

}

list.add(map);

}

if (list.size()==0){

return null;

}

return list;

} catch (SQLException e) {

e.printStackTrace();

}finally {

try {

ptmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

return null;

}

/**

* 查詢單條數據

* @param conn

* @param sql

* @param args

* @return

* @throws SQLException

*/

public static Map findFirst(Connection conn,String sql,Object...args) {

List> list = findList(conn,sql+" limit 1",args);

return list==null?null:list.get(0);

}

/**

* 設置參數

* @param ptmt

* @param args

* @return

*/

private static String setParam(PreparedStatement ptmt, Object[] args) throws SQLException {

//加入參數

String parasStr = "";

if (args!=null){

for(int i=0;i

ptmt.setObject(i+1, args[i]);

parasStr=parasStr+" "+args[i];

}

}

return parasStr;

}

public static void main(String[] args) {

//執行sql

String sql = "INSERT INTO `biz_t_error` ( `uid`, `bunkId`, `errType`, `errMsg`, `errUrl`, `addtime`, `errSql`) VALUES (?, '3250', '匹配錯誤', '測試插入啦啦啦!', 'http://data.winshang.com/Pipei_Pp.aspx', ?, 'zdb 測試數據');";

try {

execute(DBUtil.getConnection(),sql,"1314",new Date());

} catch (SQLException e) {

e.printStackTrace();

}

//查詢列表

List> list = findList(DBUtil.getConnection(),"select * from biz_t_error LIMIT 100",null);

for (int i=0;i

System.out.println("多條記錄:"+list.get(i).get("errMsg"));

}

//查詢單條記錄

Map map = findFirst(DBUtil.getConnection(),"select * from biz_t_error order by addtime desc",null);

System.out.println( "單條記錄: "+ map.get("uid")+" "+map.get("errMsg") );

}

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533946.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533946.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533946.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python wget安裝_Macbook系統環境安裝wget的2個方法 - 傳統包及Homebrew安裝

考慮到自身項目的拓展需要&#xff0c;朋友建議學習Python爬蟲這樣對于做大數據采集有較大的幫助&#xff0c;老蔣雖然每天也都接觸一些腳本和程序的修改&#xff0c;但是并沒有專業和系統的學習某一項編程。所以還是準備陸續的學習Python語言&#xff0c;無論有沒有基礎&#…

java 程序找錯_java代碼找錯

展開全部你試一下這個行不行&#xff0c;輸入的時候是數字e69da5e6ba903231313335323631343130323136353331333335313138,數字,數字;數字,數字。。。。。的格式&#xff0c;你把我注釋的那個輸入行(String stInput input.next();)的注釋去掉&#xff0c;把我字符串寫死的那行(…

zookeeper 分布式鎖_關于redis分布式鎖,zookeeper分布式鎖原理的一些學習與思考

編輯&#xff1a;業余草來源&#xff1a;https://www.xttblog.com/?p4946首先分布式鎖和我們平常講到的鎖原理基本一樣&#xff0c;目的就是確保&#xff0c;在多個線程并發時&#xff0c;只有一個線程在同一刻操作這個業務或者說方法、變量。在一個進程中&#xff0c;也就是一…

Java線程怎么發送消息_Java客戶端Socket如何能在阻塞線程下收到服務端發送來的消息?...

最近在寫Socket客戶端的時候遇到點問題客戶端在創建時創建了2個線程一個監聽鍵盤輸入事件&#xff0c;使用的是buffered&#xff0c;當檢測到輸入完成時寫入流發送給服務端。String content "";while (!(content bufferedReader.readLine()).equals("exit&quo…

python函數參數傳遞機制_Python 學習筆記(一) 理解Python的函數傳參機制

對于剛接觸Python不久的新手&#xff0c;Python的函數傳參機制往往會讓人迷惑。學過C的同學都知道函數參數可以傳值或者傳地址。比如下面這段代碼點擊(此處)折疊或打開void func(int input) {input 100;}int a 0;func(a);printf("%d", a);結果應該是打印0&#xff…

網頁無法調用java9_JAVA 9 (內部類,異常,包)

內部類&#xff1a;將一個類定義在另一個類里面&#xff0c;稱里面那個類為內部類。舉例&#xff1a;class Zx{public static void main(String []arr){Outer o new Outer();o.method();}}class Outer{class Inner //內部類&#xff0c;可以定義多個內部類{void function(){S…

python renamer模塊_Python - 批量文件重命名

兩個目標兩個&#xff1a;1. 輸入一組文件名&#xff0c;進行批量重命名&#xff1b;2. 輸入一組目錄名&#xff0c;批量重命名各個目錄下的文件。附加功能&#xff1a;1. 可根據文件的創建日期對文件重新排序&#xff1b;2. 重命名方式為遞增數列&#xff0c;可帶前后綴&#…

spark算子_Spark篇之持久化算子

一、前述Spark中控制算子也是懶執行的&#xff0c;需要Action算子觸發才能執行&#xff0c;主要是為了對數據進行緩存。控制算子有三種&#xff0c;cache,persist,checkpoint&#xff0c;以上算子都可以將RDD持久化&#xff0c;持久化的單位是partition。cache和persist都是懶執…

java g1 gc ref proc_深入理解垃圾收集器的G1及日志分析

盡管Hotspot 最新的垃圾回收器G1是在2006年推出的。但是G1從推行至今的市場反響來看&#xff0c;但現在足以證明這款垃圾收集器是經得起考驗的&#xff0c;從java9開始&#xff0c;就默認為G1垃圾收集器。G1是一款面向服務端應用的垃圾收集器。HotSpot開發團隊賦予它的使命是(在…

python爬取嗶哩嗶哩視頻_Python實現視頻爬取下載

注&#xff1a;源內容來自公眾號【python學習開發】一般情況下我們使用爬蟲更多的是對數據或者圖片進行爬取,今天在這里和大家分享一下關于使用爬蟲技術來進行視頻下載的方法,不僅可以方便的下載一些體積小的視頻,針對大容量的視頻下載同樣試用。接下來我們來介紹此次爬取視頻過…

java約瑟夫環pta上_cdoj525-猴子選大王 (約瑟夫環)

約瑟夫斯問題問題有時候也被描述成猴子選大王問題,題目如下.(最后會貼上約瑟夫問題的來歷) 一群猴子排成一圈,按1,2,…,n依次編號. 然后從第1只開始數,數到第m只,把它踢出圈,從它后面再開始數,再數到第m只,在把它踢出去…,如此不停的進行下去,直到最后只剩下一只猴子為止,那只猴…

java++記錄+運行_記錄java+testng運行selenium(三)---xml、ini、excel、日志等配置

一&#xff1a; ini文件ini目前只用處存儲瀏覽類型及需要打開的url&#xff0c;ini文件放在configs文件夾下面。讀取ini代碼如下&#xff1a;1 packagetoolskit.documents;23 import java.io.*;4 import java.util.*;56 /**7 * ClassName: ReadIni8 * Author: DingDong9 * D…

python字符串前面加f什么意思_Python 字符串前面加u,r,b,f的含義

1、字符串前加 u例&#xff1a;u"我是含有中文字符組成的字符串。"作用&#xff1a;后面字符串以 Unicode 格式 進行編碼&#xff0c;一般用在中文字符串前面&#xff0c;防止因為源碼儲存格式問題&#xff0c;導致再次使用時出現亂碼。2、字符串前加 r例&#xff1a…

mysql居左查詢abcd_MySql速查手冊

索引定義索引用來快速地尋找那些具有特定值的記錄&#xff0c;所有MySQL索引都以B樹的形式保存。就像是數據的目錄。索引類型唯一索引主鍵索引B-Tree普通索引R-Tree聯合索引Hash全文索引FullText在mysql中fulltext索引只針對myisam生效。符合索引對于創建的多列索引(復合索引)&…

和python哪個容易胖_為什么有些人特別容易胖?

7種人&#xff0c;最容易被肥胖盯上&#xff0c;其中有你嗎&#xff1f;胖&#xff0c;總是來得猝不及防&#xff0c;肥肉也總是不知不覺地長出來……許多胖友對自己的身材老摸不著腦&#xff0c;其實&#xff0c;長胖都是有跡可循的&#xff01;正如下面這7類人&#xff0c;就…

loadrunner 錯誤: 無法找到 java.exe_LoadRunner錯誤及解決方法總結

1. error:missing newline in d:\loadrunner\name.dat場景執行時報error:missing newline in d:\loadrunner\name.dat第二次執行不報兩個解決辦法&#xff1a;第一&#xff1a;如果參數不是很多的話&#xff0c;不要打開記事本去編輯參數&#xff0c;就直接在LR提供的參數的表格…

gif透明背景動畫_【超實用干貨! 】iPad上的動畫App大推薦

作者/立夏編輯/彼方大家好&#xff0c;我是立夏。大概在兩年前吧我為大家寫過幾款動畫APP的評測&#xff0c;這一次我也想給大家推薦一些我的新寵&#xff0c;供大家參考。我在這里就不過多提及如Animation Desk、Procreate或是Callipeg之類知名度相對更高一些的動畫App了&…

python框架是干什么的_django框架是干什么的

django(Python Web 框架)Django是一個開放源代碼的Web應用框架&#xff0c;由Python寫成。采用了MTV的框架模式&#xff0c;即模型M&#xff0c;視圖V和模版T。它最初是被開發來用于管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的&#xff0c;即是CMS(內容管理系統)軟件。…

iphone如何信任軟件_【手機軟件】千禾影院:全新觀影神器,支持安卓+iOS,最新、最全、高清、免費!...

Hello,大家好&#xff0c;我是春哥&#xff01;每天記得打卡哦&#xff01;感謝每一位小伙伴們的關注和支持&#xff01;免責聲明大部分資源來源于網絡&#xff0c;僅供學習和交流使用&#xff0c;如有侵權請聯系我們刪除。每期文章末尾都會有關鍵詞&#xff0c;在公眾號發消息…

Java小魔女芭芭拉_沉迷蘑菇不可自拔,黏土人《小魔女學園》蘇西·曼芭芭拉 圖賞...

GOOD SMILE出品的黏土人系列手辦新作——《小魔女學園》蘇西曼芭芭拉&#xff0c;已經開始接受預定了。這款黏土人的原型師是來自中國上海的陳天&#xff0c;售價4167日元&#xff0c;預計2018年4月發售。蘇西是主人公亞可的室友&#xff0c;她是從東南亞來的身份不明的魔女。熱…