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.mzph.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;她是从东南亚来的身份不明的魔女。热…