java dbutils_Java学习之DBUtils

article/2025/10/2 23:35:56

DBUtils:只是帮我们简化了CRUD 的代码。数据库连接的创建以及获取工作,不在其工作范围

一、DBUtils应用

①、DBUtils的jar文件的下载

②、Sql Server 、C3P0、DBUtils环境搭建(导入相应jar文件)

Sql Server :sqljdbc42.jar(JDBC驱动)

C3P0:c3p0-0.9.5.5.jar,mchange-commons-java-0.2.19.jar,c3p0-config.xml文件

DBUtilts:commons-dbutils-1.7.jar

37c6718b549e499b9830f794566ad5cb.png

③、增删改

QueryRunner queryRunner = new QueryRunner(newComboPooledDataSource());//增加

queryRunner.update("insert into account values (null , ? , ? )", "aa" ,1000);//删除

queryRunner.update("delete from account where id = ?", 5);//更新

queryRunner.update("update account set money = ? where id = ?", 10000000 , 6);

④、查询

1、直接new ResultSetHandler接口的匿名实现类

public voidtestMain() {

ComboPooledDataSource dataSource= newComboPooledDataSource();

QueryRunner runner= newQueryRunner(dataSource);try{

Account result= runner.query("Select * from account where id =?", new ResultSetHandler() {

@Overridepublic Account handle(ResultSet rs) throwsSQLException {

Account account= newAccount();while(rs.next()) {

account.setId(rs.getInt("Id"));

account.setName(rs.getString("Name"));

account.setMoney(rs.getBigDecimal("Money"));

}returnaccount;

}

},1);

System.out.println(result.toString());

}catch(SQLException e) {

e.printStackTrace();

}

}

2、使用框架实现ResultSetHandler 接口的类

2.1、实现ResultSetHandler接口的类有:

BeanHandler,  查询到的单个数据封装成一个对象

BeanListHandler, 查询到的多个数据封装 成一个List

这两个使用频率最高

ArrayHandler,  查询到的单个数据封装成一个数组

ArrayListHandler,  查询到的多个数据封装成一个集合 ,集合里面的元素是数组

MapHandler,  查询到的单个数据封装成一个map

MapListHandler,查询到的多个数据封装成一个集合 ,集合里面的元素是map

ColumnListHandler

KeyedHandler

ScalarHandler(一个单元格--Select Count(1) from T_Name)

2.2、代码实现

2.2.1、查询单个对象

1 QueryRunner queryRunner = new QueryRunner(newComboPooledDataSource());2 //查询单个对象

3 Account account = queryRunner.query("select * from account where id = ?",4 new BeanHandler(Account.class), 8);

2.2.2、查询多个对象

1 QueryRunner queryRunner = new QueryRunner(newComboPooledDataSource());2 List list = queryRunner.query("select * from account ",3 new BeanListHandler(Account.class));

二、自定义DBUtils

Ⅰ、update方法

1 public intupdate(String sql, Object... args) {2 Connection connection = null;3 PreparedStatement ps = null;4 int result = 0;5 try{6 connection =JDBCUtil.getConnection();7 ps =connection.prepareStatement(sql);8

9 ParameterMetaData metaData =ps.getParameterMetaData();10 //根据参数个数,循环给参数赋值

11 for (int i = 0; i < metaData.getParameterCount(); i++) {12 ps.setObject(i + 1, args[i]);13 }14

15 result =ps.executeUpdate();16 } catch(SQLException e) {17

18 e.printStackTrace();19 } finally{20

21 }22 returnresult;23 }

Ⅱ、查询(query)

1、查询结果操作接口

1 //用于查询结果集,封装到指定类型对象中,并返回对象实例

2 public interface ResultSetHandler{3 T handle(ResultSet resultSet);4 }

2、通用查询

1 public T query(String sql,ResultSetHandlerhandler, Object... args) {2 Connection connection = null;3 PreparedStatement ps = null;4 ResultSet resultSet=null;5 try{6 connection =JDBCUtil.getConnection();7 ps =connection.prepareStatement(sql);8

9 ParameterMetaData metaData =ps.getParameterMetaData();10 //根据参数个数,循环给参数赋值

11 for (int i = 0; i < metaData.getParameterCount(); i++) {12 ps.setObject(i + 1, args[i]);13 }14 //查询结果集

15 resultSet =ps.executeQuery();16 //调用实现ResultSetHandler接口的类中handle方法

17 returnhandler.handle(resultSet);18 } catch(SQLException e) {19

20 e.printStackTrace();21 } finally{22

23 }24 return null;25 }

3、调用自定义通用查询

1 public voidtestMain() {2 Account account=CommonCRUDUtils.query("select * from account where id=?",new

3 ResultSetHandler() {4

5 @Override6 publicAccount handle(ResultSet resultSet) {7 Account account = newAccount();8 try{9 if(resultSet.next()) {10 account.setId(resultSet.getInt("Id"));11 account.setName(resultSet.getString("Name"));12 account.setMoney(resultSet.getBigDecimal("Money"));13 returnaccount;14 }15 } catch(SQLException e) {16

17 e.printStackTrace();18 }19 return null;20 }21

22 },3);23

24 System.out.println(account.toString());25 }


http://chatgpt.dhexx.cn/article/AjfwwN9P.shtml

相关文章

DBUtils介绍与使用

目录 一、DBUtils介绍二、DBUtils使用&#xff08;一&#xff09;导入相关Jar包&#xff08;二&#xff09;使用DBUtils完成数据库操作 一、DBUtils介绍 DBUtils&#xff1a;是为了简化JDBC的快发而产生的开发工具包&#xff0c;是对JDBC的一种封装。 DBUtils是个小巧的JDBC轻…

DBUtils详解

目录 DBUtils查询数据 匿名内部类方式 反射方式 反射方式查询数据的触发器分类 多表查询 DBUtils增加,删除,修改数据 前言 使用DBUtils操作数据库,会更加的方便,因为它封装了JDBC的代码,这里我们配合c3p0使用 并不是说一定要用c3p0,因为使用DBUtils 的时候需要手动传递…

JavaWeb——(13)DBUtils

目录 一、DBUtils介绍 二、DBUtils核心对象 三、DBUtils使用简单案例 四、QueryRunner对象 4.1构造函数 4.2方法 五、ResultSetHandler接口 六、DBUtils控制事务 6.1ThreadLocal 6.2模拟转账业务 一、DBUtils介绍 DBUtils是java编程中的数据库操作实用工具&#xff…

DBUtils工具类的使用方法详解

DBUtils使用方法详解 目录 DBUtils使用方法详解一、前言二、JDBC介绍1.基本概念2.JDBC访问数据库的流程 三、DBUtils介绍1.基本概念2.配置文件3.创建JDBCUtils类4.实现对数据表的增删改查 四、对以上代码的说明五、总结 一、前言 本文是关于DBUtils使用方法的介绍&#xff0c;…

如何用计算机解kkt条件,【直观详解】拉格朗日乘法和KKT条件

【阅读时间】8min - 10mun 【内容简介】直观的解读了什么是拉格朗日乘子法,以及如何求解拉格朗日方程,并且给出几个直观的例子,针对不等式约束解读了KKT条件的必要条件和充分条件 What & Why 拉格朗日乘法(Lagrange multiplier)是一种在最优化的问题中寻找多元函数在其变…

SVM中的KKT条件和拉格朗日对偶

首先&#xff0c;我们要理解KKT条件是用来干嘛的&#xff1f; KKT条件用来判断一个解是否属于一个非线性优化问题。 求最优解&#xff1a; 约束条件分为 1、等式约束 2、不等式约束 对于等式约束的优化问题&#xff0c;可以直接应用拉格朗日乘子法去求取最优值&#xff1b; …

KKT条件详解

KKT条件详解 主要参考这篇文章和这个知乎回答。 KKT最优化条件是Karush[1939]&#xff0c;以及Kuhn和Tucker[1951]先后独立发表出來的。这组最优化条件在Kuhn和Tucker发表之后才逐渐受到重视&#xff0c;因此许多情况下只记载成库恩塔克条件&#xff08;Kuhn-Tucker conditions…

KKT条件总结

最近学习的时候用到了最优化理论&#xff0c;但是我没有多少这方面的理论基础。于是翻了很多大神的博客把容易理解的内容记载到这篇博客中。因此这是篇汇总博客&#xff0c;不算是全部原创&#xff0c;但是基础理论&#xff0c;应该也都差不多吧。因才疏学浅&#xff0c;有纰漏…

KKT条件

无约束优化 首先给出一些基本概念定义&#xff1a; 凸集&#xff1a; 欧式空间中&#xff0c;集合中任意两点的连线都在集合中&#xff0c;我们就说这个集合是凸集&#xff1b;凸函数&#xff1a; 对于任意属于[0,1]的a和任意属于凸集的两点x, y&#xff0c;有 f ( a x ( 1 …

KKT 直观理解

KKT最优化条件是Karush[1939]&#xff0c;以及Kuhn和Tucker[1951]先后独立发表出來的。这组最优化条件在Kuhn和Tucker发表之后才逐渐受到重视&#xff0c;因此许多情况下只记载成库恩塔克条件&#xff08;Kuhn-Tucker conditions) 库恩塔克条件(Kuhn-Tucker conditions)是非线性…

判断kkt条件的例题_kkt条件例题(kkt条件例题求解)

kkt条件例题(kkt条件例题求解) 2020-05-08 10:54:39 共10个回答 要看目标函数的斜率,不能单凭横坐标或纵坐标确定追问能举例说明吗回答一般线性规划的图像解法是通过平移一条直线,观察与可行域的焦点来求极值的这个还是线性规划里比较基础的问题.建议你找一本线性规划的书或者是…

kkt条件的理解_直观理解KKT条件

KKT最优化条件是Karush[1939],以及Kuhn和Tucker[1951]先后独立发表出來的。这组最优化条件在Kuhn和Tucker发表之后才逐渐受到重视,因此许多情况下只记载成库恩塔克条件(Kuhn-Tucker conditions) 库恩塔克条件(Kuhn-Tucker conditions)是非线性规划领域里最重要的理论成果之一…

对偶专题——KKT条件

[对偶专题——Duality and Dual problem (一) https://blog.csdn.net/jmh1996/article/details/85030323] 对于一般的带约束的优化问题&#xff1a; 介绍了如何通过构造原优化目标的一个下界函数 L ( x , λ , u ) L(x,\lambda,u) L(x,λ,u)&#xff0c;这一般通过添加一些线性…

java telnet端口_Java 实现 telnet命令 验证主机端口的连通性

Java 实现 telnet命令 验证主机端口的连通性 1、Telnet 命令 Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在…

解决阿里云服务器telnet端口不成功的问题

问题还原 阿里服务器部署了一个API站点&#xff0c;端口为8079&#xff0c;本地电脑怎么telnet到这个端口都不成功 排查 防火墙 要么把防火墙全部关闭&#xff0c;或者配置入站出站规则&#xff0c;这里我是直接关闭服务器的防火墙 查看端口是否正常监听 确保系统内部必须…

能ping通,但是telnet端口连接失败

背景&#xff1a;在windows上创建了客户端&#xff0c;使用腾讯云的轻量服务器创建的Linux服务器。 问题&#xff1a;服务器操作系统防火墙已关闭&#xff0c;使用ping命令没问题&#xff0c;但是使用telnet测试端口的时候&#xff0c;连接失败。 解决&#xff1a;一开始添加了…

telnet端口不通怎么解决(单边不通的方法建议)

telnet端口不通是大家在检测端口的时候可能会遇到的问题之一&#xff0c;遇到这种状况一般要如何解决呢&#xff1f;这里为各位带来分享&#xff0c;看一下telnet端口不通的解决方式&#xff0c;看一下如何处理吧。 telnet端口不通怎么解决 1.开放供应商服务器端口 总是出现…

telnet服务器端口

telnet服务器端口 1.Windows 机器使用telnet命令1.2开启telnet功能1.2 使用telnet 1.Windows 机器使用telnet命令 1.2开启telnet功能 可以通过下面步骤进入程序和功能 然后找到启用或关闭Windows功能 然后勾选上Telnet客户端&#xff0c;代表功能开启。 1.2 使用telnet …