首页 > 其他分享 >apache-DBUtils 工具类

apache-DBUtils 工具类

时间:2023-04-04 22:25:55浏览次数:40  
标签:queryRunner QueryRunner connection sql apache import DBUtils null 工具

用于查询多行多列的数据

package com.jdbc.DBUtils;

import com.JDBC_Utils.JDBCUtilsByDruid;
import com.JDBC_Utils.News;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.jupiter.api.Test;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

public class DBUtils_USE {

    /**
     * 使用 apache-DBUtils 工具类 + druid 完成对表的 crud 操作
     * */

    /**
     * 用于查询多行多列的数据
     */
    @Test
    public void testSelect_BeanListHandler() {
        //1.得到 druid 连接
        Connection connection = null;

        try {
            connection = JDBCUtilsByDruid.getConnection();
            //2.使用 DBUtils 类和接口 , 先引入 DBUtils 相关的 jar , 加入到本项目中
            //3.创建QueryRunner(QueryRunner类封装了sql的执行,可以实现crud,线程安全)
            QueryRunner queryRunner = new QueryRunner();
            //4.执行 相关操作 返回ArrayList结果集 (也可以查询部分列)
            String sql = "select * from news where id>=?";
            //光标放在括号里,ctrl + p 可以查看参数
            List<News> list = queryRunner.query(connection, sql, new BeanListHandler<>(News.class), 6);
            //(1)query 方法就是执行 sql 语句,得到 resultset ---封装到 --> ArrayList 集合中,
            //(2)并返回集合
            //(3) connection: 连接
            //(4) sql : 执行的 sql 语句
            //(5) new BeanListHandler<>(Actor.class): 在将 resultset -> News 对象 -> 封装到 ArrayList
            // 底层使用反射机制 去获取 Actor 类的属性,然后进行封装
            //(6) 10 就是给 sql 语句中的? 赋值,可以有多个值,因为是可变参数 Object... params
            //(7) 底层得到的 resultset ,会在 query 关闭, 且关闭 PreparedStatment
            //输出list  查看获取到的结果集
            System.out.println(list);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //释放资源
            JDBCUtilsByDruid.close(null, null, connection);
        }
    }
}

用于查询单行的数据

/**
     * 用于查询单行的数据
     * 演示 apache-dbutils + druid 完成 返回的结果是单行记录(单个对象)
     */
    @Test
    public void testSelect_BeanHandler() {
        //1.得到 druid 连接
        Connection connection = null;
        try {
            connection = JDBCUtilsByDruid.getConnection();
            //2.使用 DBUtils 类和接口 , 先引入 DBUtils 相关的 jar , 加入到本项目中
            //3.创建QueryRunner(QueryRunner类封装了sql的执行,可以实现crud,线程安全)
            QueryRunner queryRunner = new QueryRunner();
            //4.执行 相关操作 返回结果集
            String sql = "select * from news where id=?";
            //光标放在括号里,ctrl + p 可以查看参数
            // 因为我们返回的单行记录<--->单个对象 , 使用的 Hander 是 BeanHandler
            News news = queryRunner.query(connection, sql, new BeanHandler<>(News.class), 10);
            System.out.println(news);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //释放资源
            JDBCUtilsByDruid.close(null, null, connection);
        }
    }

用于查询单列结果

/**
     * 用于查询单列结果
     * 演示 apache-dbutils + druid 完成查询结果是单行单列-返回的就是 object
     */
    @Test
    public void testSelect_ScalarHandler() {
        //1.得到 druid 连接
        Connection connection = null;
        try {
            connection = JDBCUtilsByDruid.getConnection();
            //2.执行方法  返回单行单列
            QueryRunner queryRunner = new QueryRunner();
            String sql = "select count(?) from news";
            //因为返回的是一个对象, 使用的 handler 就是 ScalarHandler
            //返回单行单列 , 返回的就是 Object
            Object o = queryRunner.query(connection, sql, new ScalarHandler(), "*");
            System.out.println(o);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //释放资源
            JDBCUtilsByDruid.close(null, null, connection);
        }
    }

对数据库进行DML操作(插入,更新,删除语句)

 /***
     * 对数据库进行DML操作(插入,更新,删除语句)
     * */
    @Test
    public void testDML() {
        Connection connection = null;

        try {
            connection = JDBCUtilsByDruid.getConnection();
            //删除语句
            //String sql = "delete from news where id=?";
            //插入语句
            //String sql = "insert into news values (?,?,?)";
            //更新语句
            String sql = "update news set id=? where id=?";
            QueryRunner queryRunner = new QueryRunner();
            // 执行 dml 操作是 queryRunner.update()
            //受影响行数   方法返回一个int数值
            //int affectRows = queryRunner.update(connection, sql, 6,"小度","小度小度你在干嘛");
            int affectRows = queryRunner.update(connection, sql, 7, 9);
            System.out.println(affectRows > 0 ? "操作成功" : "数据库未被影响");
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //释放资源
            JDBCUtilsByDruid.close(null, null, connection);
        }

    }

标签:queryRunner,QueryRunner,connection,sql,apache,import,DBUtils,null,工具
From: https://www.cnblogs.com/weifengfuxiufa/p/17288091.html

相关文章

  • Mac截图软件工具哪个好用(6款Mac截图软件工具推荐)
    大家在使用电脑的时候必不可少会用到的一个功能就是截图,使用苹果电脑MAC的时候,大家常用什么截图呢?是苹果自带的截图软件还是微信或者QQ等聊天软软件的截图功能呢,不过话说回来,微信或者QQ虽然是大家常用的截图软件,但是其往往会受到截图大小的限制,比如你想截整屏又不想让微信入镜的......
  • 《基于Modern工具包的本地化方式》的错误修正
    在《基于Modern工具包的本地化方式》一文中实现的本地化方式忽略了在切换语言后,原始的文本值已经改变,要想再切换回去,由于找不到对应的本地化值,最终切换不了,因而,必须在第一次切换的时候记录下原始文本值,这样才能保证每次切换的时候都能找到对应值。在前文中还有一个bug是当本地化先......
  • 基于Modern工具包的本地化方式(上)
    新项目需要从服务器下载本地化资源,如果继续使用快速模板的本地化策略就很尴尬了,绝不可能等待本地化资源全部下载后再去加载项目,得另想办法。在研究过了《Internationalization&LocalizationwithSenchaExtJS》一文后,终于有思路了。文章的思路是通过重写Ext.Component来导入本......
  • 项目管理工具——Jira使用和配置
    摘要链接:https://pan.baidu.com/s/1_PgOuOWsS1lnHIIyI0y4pA 提取码:v0dy本博文将介绍在软件开发中的常用的软件管理工具。Jira是Atlassian公司出品的一款事务管理软件(缺陷管理类的软件)。无论是“需求”,还是“BUG”,或是“任务”,都是“事务”的一种,所以Jira可以胜任非常多的角色:需求......
  • Git——代码管理工具
    摘要Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是Linux内核开发而开发的一个开放源码的版本控制软件。Git与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持。但是对于的很多应届毕业生学生没有......
  • 用python实现简单的版本号生成工具
    用python实现简单的版本号生成工具我们发布比较频繁,每次发布都需要从release分支打1个tag,不过可能是因为年纪大了的缘故吧,尽管借鉴了一些版本号的制定规则,不过每次我都记不太住,需要翻文档去重新复习,不如把这步自动化一下,为未来的自己节约一点时间,另外有了工具就好统一规则,后面所......
  • 智能AI代码工具Cursor的使用
      //ImportnecessarynamespacesusingSystem.Net.Http;usingSystem.Text;usingSystem.Threading.Tasks;//DefineamethodtosendamessagetotheWeChatgrouppublicasyncTaskSendMessageToWeChatGroup(stringmessage){//DefinetheWeChatgro......
  • 阿西莫夫机器人 用 ChatGPT 开发一个能听懂人话的命令行工具
    小结:1、3种角色2、设立榜样ChatGPT会将整个聊天记录作为输入,因此我们可以通过提供一些“榜样”来让ChatGPT更好地理解我们的意图。这意味着我们可以在界面上将ASSISTANT原先错误的回答修改为正确的,也就是给出了正确回答的“好榜样”。   用ChatGPT开发一个能听......
  • Apache DB Utils教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介ApacheCommonsDBUtils入门教程-从基本到高级概念的简单简单步骤熟悉ApacheCommonsDBUtils,其中包括概述,环境设置,第一个应用程序,基本CRUD示例,创建,读取,更新,删除查询,DBUtils对象,QueryRunner,AsyncQueryRunner,ResultSetHandler,BeanHandler,ArrayListHandler,BeanListHandle......
  • IT工具知识-16: 安卓手机通过USB共享网络给OpenWrt
    0.系统环境设备:PhicommN1固件:OpenWrtR22.6.16(2022-06-1610:27:09byflippy)内核:5.15.47-flippy-73+o1.使用前必备在OpenWrt中安装以下模块kmod-usb-netkmod-usb-net-rndiskmod-usb-net-cdc-etheradb安装支持手机USB共享的内核模块(通过ssh终端操作)安装......