最全JAVA中DBUtils的QueryRunner类实现增删改查详解(1),java事务管理面试题

最后

由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。

image

本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。

image

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

public class JdbcUtil {

private static Connection con = null;

private static DataSource ds = null;

private static Properties pt = null;

static {

// 1.获得当前类的加载器

ClassLoader cl = JdbcUtil.class.getClassLoader();

// 通过该加载器得到一个输入流

InputStream in = cl.getResourceAsStream(“jdbc.properties”);

// 通过输入创一个properties对象

pt = new Properties();

try {

pt.load(in);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static Connection getCon() {

if (ds == null) {

try {

ds = (DruidDataSource) DruidDataSourceFactory.createDataSource(pt);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

try {

return ds.getConnection();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

public static void closeCon(Connection con) {

try {

con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

具体使用模板:

public static void main(String[] args) throws Exception{

//使用自己的工具类,获取数据库的连接对象

Connection conn = MyJDBCUtils.getConnection();

//创建QueryRunner类对象

QueryRunner qr = new QueryRunner();

String sql = “UPDATE gjp_ledger set money=? , ldesc=? where lid=?”;

Object[] params = {998,“买钻石”,3};

int result = qr.update(conn, sql, params);

System.out.println(result);

DbUtils.close(conn);

}

二.QueryRunner类获取查询结果集ResultSetHandler

===================================================================================================

1.常用Handler

  • ArrayHandler 将结果集第一行转成对象数组

public static void main(String[] args) throws Exception{

Connection conn = MyJDBCUtils.getConnection();

String sql = “SELECT * FROM gjp_ledger where lid=?”;

//结果集处理方式,ArrayHandler 第一行转成对象数组

QueryRunner qr = new QueryRunner();

Object[] objects = qr.query(conn, sql, new ArrayHandler(),3);

for(Object obj : objects){

System.out.println(obj);

}

}

  • ArrayListHandler 将结果集中的每一行数据都转成一个对象数组,再将转成的多个对象数组存放到List

public static void main(String[] args) throws Exception{

Connection conn = MyJDBCUtils.getConnection();

String sql = “SELECT * FROM gjp_ledger”;

QueryRunner qr = new QueryRunner();

//执行query方法,传递连接对象,SQL语句,结果集处理方式

ArrayListHandler

List<Object[]> list = qr.query(conn, sql, new ArrayListHandler());

for(Object[] objects : list){

for(Object obj : objects){

System.out.print(obj+" ");

}

System.out.println();

}

}

  • BeanHandler 将结果集第一行数据封装到一个对应的业务类实例中

(1): 定义业务数据类Ledger(实体类,javaBean)

public class Ledger {

//要生成空参、有参构造、set和get方法、toString方法

private int lid;

private String parent;

private double money;

private int sid;

private String account;

private String createtime;

private String ldesc;

}

(2)测试案例代码

public static void main(String[] args) throws Exception{

Connection conn = MyJDBCUtils.getConnection();

String sql = “SELECT * FROM gjp_ledger”;

QueryRunner qr = new QueryRunner();

//BeanHandler泛型,构造方法(和反射有关系的对象)

Ledger legder = qr.query(conn, sql, new BeanHandler(Ledger.class));

System.out.println(legder);

}

  • BeanListHandler 将结果集中的每一行数据都封装到一个对应的业务类实例中,再将多个业务类实例对象存放到List里。

public static void main(String[] args) throws Exception {

Connection conn = MyJDBCUtils.getConnection();

String sql = “SELECT * FROM gjp_ledger”;

//结果集处理方式,BeanListHandler 每一行数据封装到业务数据类中

QueryRunner qr = new QueryRunner();

List list = qr.query(conn, sql, new BeanListHandler(Ledger.class));

for(Ledger ledger : list){

System.out.println(ledger);

}

}

  • MapHandler 将结果集中的第一行数据封装到一个Map中,key是列名,value是对应的值。

public static void main(String[] args) throws Exception {

Connection conn = MyJDBCUtils.getConnection();

String sql = “SELECT * FROM gjp_ledger”;

//结果集处理方式,MapHandler 封装到一个Map集合中,存储键值对集合

QueryRunner qr = new QueryRunner();

Map<String,Object> map = qr.query(conn, sql,new MapHandler());

for(String key : map.keySet()){

System.out.println(key+" "+map.get(key));

}

}

  • MapListHandler 将结果集中的每一行数据都封装到一个Map里,然后再将多个Map存放到List

public static void main(String[] args) throws Exception{

Connection conn = MyJDBCUtils.getConnection();

String sql = “SELECT * FROM gjp_ledger”;

总结

大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。

麻烦帮忙转发一下这篇文章+关注我

就这一次!拼多多内部架构师培训Kafka源码笔记(现已绝版)

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。

麻烦帮忙转发一下这篇文章+关注我

[外链图片转存中…(img-i1OI4s23-1715564985723)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值