JDBC工具类完整版!

摘要:
characterEnconding=UTF-8“,”root“,”根“);}捕获{e.printStackTrace();}returnnull;}/**添加、删除和修改*@paramStringsql的常用方法要执行的sql*@paramObject[]obj对象类型数组包含用于sql执行的占位符参数**对象…变量参数**/publicstaticbooleanexecuteUpdate{Connectionconn=null;PrepareStatementps=null;try{conn=getConnection();ps=conn.prepareStatement;for{ps.setObject;}inti=磅/平方英寸。executeUpdate();如果(i˃0)返回true;}捕获{e.printStackTrace();}最后{//关闭;}returnfalse;}/***C公共查询方法*@paramsql*@paramargs*@return*/publicstaticList<Map<String,Object>>executeQuery{//变量参数Object…argsConnectionconn=null;PreparedStatementps=null;ResultSet=null;try{conn=DBUtil.getConnection();ps=conn.prepareStatement;/*可能有{ps.setObject;}的参数*//*Execute*/set=ps executeQuery();/*所有数据都需要存储在列表中。每行都需要一个Map来存储*/List<Map<String,Object>>List=newArrayList<>()/*获取查询结果集中的列数*/intcount=set。getMetaData()getColumnCount();虽然{Map<String,Object>Map=newHashMap<>();//一行数据被Map接收/*我们不关心数据库表中有多少列是通过getMetData().getColumnLabel()获得的,因为可以通过使用{Stringname=set.getMetaData().getColumnLabel(i+1);Map.put;}/*的映射键值对集来获得相应的值将每行的地图存储在列表*/列表中。添加;}返回列表;}捕获{e.printStackTrace();}最后{close;}returnnull;}/**通用关闭方法*先进先出原则**/privatestaticvoid关闭{try{if(set!
package com.aaa.util;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * JDBC工具类?
 *      一、增删改的通用方法
 *      二、查询的通用方法
 *      三、关闭的通用方法
 */
public class DBUtil {

    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

     public static Connection getConnection(){
         try {
             return DriverManager.getConnection("jdbc:mysql://localhost:3306/qy66?characterEnconding=UTF-8", "root", "root");
         } catch (SQLException e) {
             e.printStackTrace();
         }
         return null;
     }
     /** 增删改的通用方法
     * @paramString sql  要执行的sql
      * @paramObject[] obj    对象类型的数组  里面存放着 sql执行的占位符参数
      *               【name,age,id】
     *                【id】
      *               【name,age】
      *         Object... 可变参数
     * */
    public static boolean executeUpdate(String sql,Object... args){
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            conn = getConnection();
            ps = conn.prepareStatement(sql);

            for (int i=0;i<args.length;i++){
                ps.setObject(i+1,args[i]);
            }
            int i = ps.executeUpdate();

            if (i>0)return true;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //关闭
            close(conn,ps,null);
        }
        return false;
    }

    /**
     * c查询的通用方法
     * @param sql
     * @param args
     * @return
     */
    public static List<Map<String,Object>> executeQuery(String sql,Object... args){ //可变参数  Object... args
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet set = null;
        try {
            conn = DBUtil.getConnection();
            ps = conn.prepareStatement(sql);
            /* 有可能有参数 */
            for (int i=0;i<args.length;i++){
                ps.setObject(i+1,args[i]);
            }
            /*执行*/
            set = ps.executeQuery();
            /*需要将所有数据都存放到 List中    每一行 用一个 map存放*/
            List<Map<String,Object>> list = new ArrayList<>();
            /*获取本次查询结果集有多少列*/
            int count = set.getMetaData().getColumnCount();

            while(set.next()){
                Map<String, Object> map = new HashMap<>();//一行数据 用一个map 接收
                /*
                我们不用在乎数据库表中有几列
                通过  getMetData().getColumnLabel() 获取列
                因为用的map键值对集合  得到了列  就能得到相应的values值

                 */
                for(int i=0;i<count;i++){
                    String name = set.getMetaData().getColumnLabel(i+1);
                    map.put(name,set.getObject(name));
                }
                /*将每行的map存放到 List中*/
                list.add(map);
            }
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            close(conn,ps,set);
        }
        return null;
    }

    /** 关闭的通用方法
    *       先进后出的原则
    * */
    private static void close(Connection conn,PreparedStatement st,ResultSet set){
        try {
            if(set!=null){
                set.close();
            }
            if(st!=null){
                st.close();
            }
            if(conn != null){
                conn.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

}

免责声明:文章转载自《JDBC工具类完整版!》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mybatis常用的模糊查询关于51单片机串口通讯中向上位机发送字符的讨论下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Jmeter常用控件三、Sampler

标签(空格分隔): Jmeter Sampler是性能测试过程中向服务器发送请求,记录响应信息,记录响应时间的最小单元。 Jmeter默认支持的请求 Web - HTTP, HTTPS (Java, NodeJS, PHP,ASP.NET, …) SOAP / REST Webservices FTP Database via JDBC LDAP M...

Mysql中使用JDBC流式查询避免数据量过大导致OOM

一、前言 java 中MySQL JDBC 封装了流式查询操作,通过设置几个参数,就可以避免一次返回数据过大导致 OOM。 二、如何使用 2.1 之前查询 public void selectData(String sqlCmd) throwsSQLException { validate(sqlCmd); Connection con...

sparkSQL以JDBC为数据源

一、环境准备 安装oracle后,创建测试表、数据: createtabletest( usernamevarchar2(32)primarykey, passwordvarchar2(32) ); insertintotestvalues('John','1234'); insertintotestvalues('Mike'...

记一次docker安装logstash,并且读取数据库数据到es

docker安装logstash,在hub.docker官网是没有示例的。查了文章,大部分复制黏贴,语焉不详的。看着懵,虽然经过复制黏贴操作启起来了,但还是很多不理解。回想下不用docker安装的logstash,对比了下大致有点理解了。可自己配置run,还是启动没一会自动停止了。懊恼不已。 刚才仔细对比,小心求证发现了问题所在。貌似logstash启动要...

MyBatis模糊查询不报错但查不出数据的一种解决方案

今天在用MyBatis写一个模糊查询的时候,程序没有报错,但查不出来数据,随即做了一个测试,部分代码如下: [html] view plain copy  @Test   public void findByNameTest() throws IOException {       String resource = "SqlMapConfig.x...

Elasticsearch logstsh同步mysql数据到ES中

1、准备: 1) 启动前面搭建的ES集群, 192.168.127.130,192.168.127.128,192.168.127.129 2) 准备要同步的数据库和数据 数据库所在的服务器IP为192.168.1.104 数据库端口为3306 数据库名shop,表名items items的表结构如下 items表的数据如下 这里有两条数据,实际环境会...