java----DBUtils知识点补充

dbutils 只是帮我们简化了CRUD 的代码, 但是连接的创建以及获取工作。 不在他的考虑范围

QueryRunner主要是这个类

import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;import com.mchange.v2.c3p0.ComboPooledDataSource;public class DBUtilsDemo1 {//dbutils 只是帮我们简化了CRUD 的代码, 但是连接的创建以及获取工作。 不在他的考虑范围//QueryRunner主要是这个类public static void main(String[] args) throws SQLException {//本部分演示QueryRunner类的增加,删除,更新//结合C3p0的配置文件的使用方式,直接一行代码获取连接QueryRunner queryRunner=new QueryRunner(new ComboPooledDataSource());//增加String sql="insert into blank values (null,?,?)";//删除String sql2="delete from blank where id=?";//更新String sql3="update blank set money=? where id=?";//直接执行就可以了//queryRunner.update(sql,"testroot",20000000);//删除的执行语句//queryRunner.update(sql2,1);//更新的执行语句queryRunner.update(sql3,800000,3);}
}

 

 

下面是实现从数据库中查询一条或者多条数据

有如下六种方法

######ResultSetHandler 常用的实现类(重点)
以下两个是使用频率最高的BeanHandler,  查询到的单个数据封装成一个对象BeanListHandler, 查询到的多个数据封装 成一个List<对象>
------------------------------------------
ArrayHandler,  查询到的单个数据封装成一个数组
ArrayListHandler, 查询到的多个数据封装成一个集合 ,集合里面的元素是数组。

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

 

 

首先看下常规的操作

import java.sql.ResultSet;
import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.sun.swing.internal.plaf.basic.resources.basic;public class DBUtilDemo2 {
//演示查询一条或者多条数据库中的信息public static void main(String[] args) throws SQLException {//首先一条语句获得数据库的连接QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource());//然后使用ResultSetHandler(这种不是框架,属于常规操作)Account  accoun =  queryRunner.query("select * from blank where id = ?", new ResultSetHandler<Account>(){public Account handle(ResultSet rs) throws SQLException {Account account=new Account();while(rs.next()){String name=rs.getString("name");int money=rs.getInt("money");account.setName(name);account.setMoney(money);}return account;}},5);System.out.println(accoun.getName()+"========"+accoun.getMoney());}
}

 

 

 

 

 BeanHandler,  查询到的单个数据封装成一个对象
public class DBUtilDemo2 {
//演示查询一条或者多条数据库中的信息public static void main(String[] args) throws SQLException {//首先一条语句获得数据库的连接QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource());//然后使用ResultSetHandler(这种不是框架,属于常规操作)Account  accoun =  queryRunner.query("select * from blank where id = ?", new BeanHandler<Account>(Account.class),5);System.out.println(accoun.getName()+"========"+accoun.getMoney());//testroot========20000000
    }
}

 

 

 

BeanListHandler, 查询到的多个数据封装 成一个List<对象>
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.sun.swing.internal.plaf.basic.resources.basic;public class DBUtilDemo2 {
//演示查询一条或者多条数据库中的信息public static void main(String[] args) throws SQLException {//首先一条语句获得数据库的连接QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource());//BeanListHandler获得数据库的全部信息List<Account> list= queryRunner.query("select * from blank", new BeanListHandler<Account>(Account.class));//遍历输出int len=list.size();for(int i=0;i<len;i++){Account blank=list.remove(0);System.out.println(blank.getName()+"====="+blank.getMoney());}}
}

 

 

 

其中Account类代码如下

public class Account {public String name;public int money;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getMoney() {return money;}public void setMoney(int money) {this.money = money;}}

转载于:https://www.cnblogs.com/byczyz/p/11349538.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大厂offer手到擒来,Java面试真题精选

前言 事务我们都知道是什么&#xff0c;而Spring事务就是在数据库之上利用AOP提供声明式事务和编程式事务帮助我们简化开发&#xff0c;解耦业务逻辑和系统逻辑。但是Spring事务原理是怎样&#xff1f;事务在方法间是如何传播的&#xff1f;为什么有时候事务会失效&#xff1f…

大厂也在用的6种数据脱敏方案,醍醐灌顶!

前言 由于作者面试过程中高度紧张&#xff0c;本文中只列出了自己还记得的部分题目。 经历了漫长一个月的等待&#xff0c;终于在前几天通过面试官获悉已被蚂蚁金服录取&#xff0c;这期间的焦虑、痛苦自不必说&#xff0c;知道被录取的那一刻&#xff0c;一整年的阴霾都一扫…

大牛带你直击优秀开源框架灵魂,给大家安排上!

前言 微架构的出现&#xff0c;很好地适应了这个时代对快速发展变化的要求。它不再提倡一体化的项目设计&#xff0c;而是对项目进行有效的“业务区”(可以简单理解为不同的子系统〉划分&#xff0c;并利用合理的技术对业务性能做出提升和改善&#xff0c;同时又极大地简化了配…

大牛用SSM框架实现了支付宝的支付功能,满满干货指导

前言 现在刷抖音经常可以看到一些老外街坊&#xff0c;问他们最想把什么带回自己的国家&#xff0c;我听过很多的回答都是&#xff1a;淘宝&#xff0c;支付宝&#xff0c;美食&#xff0c;微信&#xff0c;外卖&#xff0c;高铁等等。 确实如此&#xff0c;随着国家的快速发…

java---Listener Filter知识点学习

##Listener > 监听器 * 能做什么事&#xff1f; > 监听某一个事件的发生。 状态的改变。 * 监听器的内部机制 > 其实就是接口回调. ####接口回调 * 需求&#xff1a; > A在执行循环&#xff0c;当循环到5的时候&#xff0c; 通知B。 > 事先先把一个对象传递给 …

头条三面技术四面HR,就是这么简单

前言 看日期&#xff0c;今天都是4月了&#xff0c;这春招也差不多进入尾声了。 近期任有不少朋友都在找工作&#xff0c;很多人开始抱怨&#xff0c;工作可真难找啊&#xff01;身边不少朋友问我咋搞呀&#xff0c;秋招都要结束了&#xff0c;工作还没着落呢…额…这个…今年…

临时表

tmp_table_size 这个配置限制了内存临时表的大小&#xff0c;默认值是 16M。 如果临时表大小超过了 tmp_table_size&#xff0c;那么内存临时表就会转成磁盘临时表 磁盘临时表使用的引擎默认是 InnoDB&#xff0c;是由参数 internal_tmp_disk_storage_engine 控制的。 转载于:h…

如何保证Redis与数据库的双写一致性?进阶加薪全靠它!

我有话要说&#xff0c;请仔细看完 我发现一个现象&#xff0c;很多开发5年的程序员仍然停留在crud的阶段&#xff0c;这是什么原因&#xff1f; 最主要的原因就是基础很差&#xff0c;尤其对于JVM和并发编程这方面掌握的比较差&#xff0c;而JVM和并发编程就是非常非常重要的…

Swimming Balls

Swimming Balls https://vjudge.net/contest/318752#problem/J如果直接算&#xff0c;各种球的情况都不清楚&#xff0c;因为放一个球之后&#xff0c;水位的变化也会影响之前放入的球&#xff0c;不如&#xff0c;二分最终的水位高度&#xff0c;这样每个球的贡献就有了 #incl…

如何保证redis高可用?薪资翻倍

前言&#xff1a; 首先介绍一下我的同学&#xff0c;专科毕业应用电子技术专业&#xff0c;已经毕业快两年了。因为专业的原因工作一年觉得没什么发展前途就想转行&#xff0c;身为他的“好基友”&#xff0c;他觉得我这个工作挺好的&#xff0c;就咨询了我一下&#xff0c;经…

Linux中强大的输入输出重定向和管道

Linux中有三个最重要的输入输出流: Standard Input(STDIN) - 通常指键盘的输入 Standard Output(STDOUT) - 通常指显示器的输出 Standard Error(STDERR) - 通常也是重定向到显示器 默认情况下&#xff0c;分别是0表示标准输入(stdin),1表示标准输出(stdout),2表示标准错误。 参…

如何保证消息队列的高可用?透彻分析源码

前言 成为优秀的架构师是大部分初中级工程师的阶段性目标。优秀的架构师往往具备七种核心能力&#xff1a;编程能力、调试能力、编译部署能力、性能优化能力、业务架构能力、在线运维能力、项目管理能力和规划能力。 这几种能力之间的关系大概如下图。编程能力、调试能力和编…

rails 放在 apache一个目录下面的配置方法

<Location /redmine> ProxyPass http://localhost:3000 ProxyPassReverse http://localhost:3000/</Location>然后&#xff0c;配置additional_environment.rb文件中config.action_controller.relative_url_root /redmine这样基本就可以了&#xff0c;但是&…

如何化身BAT面试收割机?不吃透都对不起自己

前言 多线程相对于其他 Java 知识点来讲&#xff0c;有一定的学习门槛&#xff0c;并且了解起来比较费劲。在平时工作中如若使用不当会出现数据错乱、执行效率低&#xff08;还不如单线程去运行&#xff09;或者死锁程序挂掉等等问题&#xff0c;所以掌握了解多线程至关重要。…

Tensorflow2.0开启,从此忘记1.*版本

1.可使用GPU&#xff0c;提升上百倍的效率 2.可自动求导 3.内置神经网络API 使用cast&#xff0c;可以转换成相应的类型 转载于:https://www.cnblogs.com/ningxinjie/p/11412653.html

如何在面试中通过工厂模式来给自己加分?逆袭面经分享

拼多多三面惨败&#xff0c;java中间件、数据库与spring框架&#xff0c;答不上… 面试开火箭&#xff0c;工作拧螺丝…月初有个朋友面试拼多多&#xff0c;一面自信满满过了&#xff0c;结果三面却惨败…昨天朋友约我出来讨论问题在哪里&#xff0c;三面就答不上了&#xff0…

CNN/RNN TF1.4

###CNN###import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data这些是tf1.*版本&#xff0c;现在我已经升级到2.0版本&#xff0c;上方数据集都用不了了...黑白图片&#xff0c;因此这里使用的是2Dmnistinput_data.read_data_sets("MNIST…

Java-类与对象

Java&#xff0c;从一开始学习这门技术&#xff0c;我们就被注入了一个概念——“Java是一门面向对象编程语言。”是的&#xff0c;Java之所以简单而具有优势&#xff0c;就是因为面向对象所带来的方便。这种方式免去了C 中反复而难以理解的指针和多继承&#xff0c;“可以让程…

Hibernate学习笔记(一)

####1.1Hibernate框架的学习路线第一天&#xff1a;Hibernate的入门&#xff08;Hibernate的环境搭建、Hibernate的API、Hibernate的CRUD&#xff09;第二天&#xff1a;Hibernate的一级缓存、其他的API第三天&#xff1a;Hibernate的一对多配置、Hibernate的多对多的配置…

Java-进阶:Java-File--IO—1

#目录 一、File 类 二、IO流 三、字节输出流 四、字节输入流 五、字节流文件复制 六、字符输出流 七、字符输入流 八、字符流复制文本文件 ##一、File 类 ###1. 概述 文件 和 目录路径名 的抽象表达形式 Java中把文件或者目录&#xff08;文件夹&#xff09;都封装成 File对象…