一、使用QueryRunner类,实现对数据表的 insert delete update

package com.shuhuadream.queryrunner;

import java.sql.Connection;
import java.sql.SQLException; import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner; import com.shuhuadream.jdbcutil.JDBCUtilConfig; /*
* 使用QueryRunner类,实现对数据表的
* insert delete update
* 调用QueryRunner类的方法 update (Connection con,String sql,Object...param)
* Object...param 可变参数,Object类型,SQL语句会出现?占位符
* 数据库连接对象,自定义的工具类传递
*/
public class QueryRunnerDemo {
private static Connection con = JDBCUtilConfig.getConnection(); public static void main(String[] args)throws SQLException {
//insert();
update();
//delete();
}
/*
* 定义方法,使用QueryRunner类的方法delete将数据表的数据删除
*/
public static void delete()throws SQLException{
//创建QueryRunner类对象
QueryRunner qr = new QueryRunner();
//写删除的SQL语句
String sql = "DELETE FROM sort WHERE sid=?";
//调用QueryRunner方法update
int row = qr.update(con, sql, 8);
System.out.println(row);
/*
* 判断insert,update,delete执行是否成功
* 对返回值row判断
* if(row>0) 执行成功
*/
DbUtils.closeQuietly(con);
} /*
* 定义方法,使用QueryRunner类的方法update将数据表的数据修改
*/
public static void update()throws SQLException{
//创建QueryRunner类对象
QueryRunner qr = new QueryRunner();
//写修改数据的SQL语句
String sql = "UPDATE sort SET sname=?,sprice=?,sdesc=? WHERE sid=?";
//定义Object数组,存储?中的参数
Object[] params = {"花卉",100.88,"情人节玫瑰花",4};
//调用QueryRunner方法update
int row = qr.update(con, sql, params);
System.out.println(row);
DbUtils.closeQuietly(con);
} /*
* 定义方法,使用QueryRunner类的方法update向数据表中,添加数据
*/
public static void insert()throws SQLException{
//创建QueryRunner类对象
QueryRunner qr = new QueryRunner();
String sql = "INSERT INTO sort (sname,sprice,sdesc)VALUES(?,?,?)";
//将三个?占位符的实际参数,写在数组中
Object[] params = {"体育用品",289.32,"购买体育用品"};
//调用QueryRunner类的方法update执行SQL语句
int row = qr.update(con, sql, params);
System.out.println(row);
DbUtils.closeQuietly(con);
}
}

二、QueryRunner数据查询操作,结果集八种处理方法

package com.shuhuadream.queryrunner;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler; import com.shuhuadream.domain.Sort;
import com.shuhuadream.jdbcutil.JDBCUtilConfig; /**
* QueryRunner数据查询操作
* 调用QueryRunner类方法query(Connection con,String sql,ResultSetHandler r,Object..params)
* ResultSetHandler r 结果集的处理方式,传递ResultSetHandler接口实现类
* Object...params sql语句的?占位符
*
* 注意:query方法返回值,返回的是T 泛型,具体返回值类型,跟随结果集处理方式变化
* */
public class QueryRunnerDemo02 {
private static Connection con = JDBCUtilConfig.getConnection();
public static void main(String[] args) throws SQLException {
//ArrayHandler();
//arrayListHandler();
//beanHandler();
//beanListHandler();
//columnListHandler();
//scalarHandler();
//mapHandler();
mapListHandler();
} /**
* 结果集第一种处理方法,ArrayHandler
* 将结果第一行存储到对象数组中Object[]
* @throws SQLException
* */
public static void ArrayHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM sort";
//调用query执行查询,传递连接对象,SQL语句,结果集处理方式的实现类
//返回对象数组
Object[] result = qr.query(con, sql,new ArrayHandler());
for (Object obj : result) {
System.out.println(obj);
}
} /**
* 结果集的第二种处理方法,ArrayListHandler
* 将结果集的每一行,封装到对象数组中,出现很多对象数组
* 对象数组存储到List集合
* @throws SQLException
* */
public static void arrayListHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM sort";
//调用query方法,结果集处理的参数上,传递实现类ArrayListHandler
//方法返回值 每行是一个数组
List<Object[]> result = qr.query(con, sql, new ArrayListHandler());
//集合的遍历
for (Object[] objs : result) {
for (Object obj : objs) {
System.out.print(obj+"\t");
}
System.out.println();
}
}
/**
* 结果集的第三种处理方法BeanHandler
* 将结果集的第一行数据,封装为JavaBean对象
* 注意:被封装成数据到JavaBean对象,Sort类必须有空参构造
* @throws SQLException
* */
public static void beanHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM sort";
//调用方法,传递结果集实现BeanHandler
//BeanHandler(Class<T> type)
Sort s = qr.query(con, sql,new BeanHandler<Sort>(Sort.class));
System.out.println(s);
} /**
* 结果集第四种处理方法,BeanListHandler
* 将数据结果集的每一行数据,封装为JavaBean对象
* 多个JavaBean对象封装到List集合中
* @throws SQLException
* */
public static void beanListHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM sort";
//调用方法传递结果集的实现类BeanListHandler
//BeanListHandler(Class<T> type)
List<Sort> list = qr.query(con, sql, new BeanListHandler<Sort>(Sort.class));
for (Sort s : list) {
System.out.println(s);
}
} /**
* 结果集第五种处理方法,ColumnListHandler
* 结果集,指定列的数据,存储到List集合中
* List<Object> 每个列数据类型不同
* @throws SQLException
* */
public static void columnListHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM sort";
//调用方法query,传递结果集实现类ColumnListHandler
//实现类构造方法,使用字符串的列名
List<Object> list = qr.query(con, sql, new ColumnListHandler<Object>("sname"));
for (Object obj : list) {
System.out.println(obj);
}
}
/**
* 结果集第六种处理方法、
* 对于查询后,只有一个结果
* @throws SQLException
* */
public static void scalarHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT COUNT(*) FROM sort";
//调用方法query,传递结果集处理类ScalarHandler
long count = qr.query(con,sql,new ScalarHandler<Long>());
System.out.println(count);
} /**
* 结果集的第七种处理方式,MapHandler
* 将结果集第一行数据,封装到Map集合中
* Map<键,值> 键:列名 值:这列数据
* @throws SQLException
* */
public static void mapHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM sort";
//调用方法query,传递结果集实现类MapHandler
//返回值:Map集合,Map接口实现类 泛型
Map<String,Object> map = qr.query(con, sql,new MapHandler());
for (String key : map.keySet()) {
System.out.println(key+"..."+map.get(key));
}
}
/**
* 结果集第八种处理方法,MapListHandler
* 将结果集每一行存储到Map集合,键:列名 值:数据
* Map集合过多,存储到List集合
* @throws SQLException
* */
public static void mapListHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM sort";
//调用方法query,传递结果集实现类MapListHander
//返回值List集合,存储的是Map集合
List<Map<String, Object>> list = qr.query(con, sql,new MapListHandler());
for (Map<String, Object> map : list) {
for (String key : map.keySet()) {
System.out.print(key+"..."+map.get(key));
}
System.out.println();
}
}
}

转载:

版权声明:本文为麦客子学习整理笔记,转载请附上链接!

https://blog.csdn.net/a911711054/article/details/77719685

【转载】JavaWeb之DBUtils QueryRunner类对数据表的增、删、查(8种结果集处理方式)、改操作的更多相关文章

  1. C# - VS2019 通过DataGridView实现对Oracle数据表的增删改查

    前言 通过VS2019建立WinFrm应用程序,搭建桌面程序后,通过封装数据库操作OracleHelper类和业务逻辑操作OracleSQL类,进而通过DataGridView实现对Oracle数据表 ...

  2. AngularJS中使用$http对MongoLab数据表进行增删改查

    本篇体验使用AngularJS中的$http对MongoLab数据表进行增删改查. 主页面: <button ng-click="loadCourse()">Load ...

  3. Mysql数据表的增删改查

    ---恢复内容开始--- Mysql数据表的增删改查 1.创建表   语法:CREATE TABLE 表名(字段1,字段2,字段3.......) CREATE TABLE `users` ( `us ...

  4. MySQL数据库 | 数据表的增删改查

    MySQL数据的增删改查(crud) 本文结构 一.增加 create 二.修改 update 三.查询 retrieve(简单查询,下篇详细展开) 四.删除 delete 首先,创建简单的class ...

  5. python django对数据表的增删改查操作

    新增操作:方式1:book = BookInfo(title='西游记',price=99)book.save() 方式2:BookInfo.objects.create(title='西游记',pr ...

  6. python利用xmlrpc方式对odoo数据表进行增删改查操作

    # -*- encoding: utf-8 -*- import xmlrpclib #导入xmlrpc库,这个库是python的标准库. username ='admin' #用户登录名 pwd = ...

  7. mysql 数据表的增删改查 目录

    mysql 表的增删改查 mysql 表的增删改查 修改表结构 mysql 复制表 mysql 删除表

  8. Django(十)模型:django模型类对数据库的:增/删/改/查、自关联、管理器、元选项(指定表名)

    一.插入.更新和删除 调用一个模型类对象的save方法的时候就可以实现对模型类对应数据表的插入和更新. 调用一个模型类对象的delete方法的时候就可以实现对模型类对应数据表数据的删除. 二.自关联 ...

  9. 今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式

    今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式 jquery中的serialize() 方法 该方法通过序列化表单值,创建 URL 编码文本字符串 序列化的值可在 ...

随机推荐

  1. GIT的API主要应用示例

    这几个简单的API应用,主要是通过TOKEN来获取GIT内空的例子. 但在获取GIT的文件列表时,要注意区分目录和文件的MODE差别( 100644 普通文件 040000 普通目录 ). impor ...

  2. JAVA的堆和栈(转)

    堆栈是 两种数据结构.堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.在单片机应用中,堆栈是个特殊的存储 区,主要功能是暂时存放数据和地址,通常用来保护断 ...

  3. Ambari-部署常见问题

    重新启动ambari-server端后调用install.start API后返回200 导致该问题的解决办法是server在启动后没有收到agent的心跳即没有与agent建立连接,在此时进行API ...

  4. springmvc 处理lsit类型的请求參数映射成实体属性

    <table align="center" cellspacing="10"> <tr> <td> 母码数目:<inp ...

  5. 工作easy,赚钱非常难

    李宗盛有首歌的歌词里写到:「工作是easy的,赚钱是困难的」. 乍一听感觉有点矛盾,工作的一个重要结果不就是赚钱么,为什么工作easy赚钱却难?但细致一想就恍然当中想表达的意思了. 工作的本质是出售劳 ...

  6. ScheduleJobFactory

    /* * file name: ScheduleJobFactory.java * copyright: Unis Cloud Information Technology Co., Ltd. Cop ...

  7. linux下查看监听port相应的进程

    使用netstat查看进程PID [root@test ~]# netstat -anp|grep 5001 tcp 0 0 :::5001 :::* LISTEN 12886/java 之后各位看官 ...

  8. vim copy,find and replace

    VIM选择文本块/复制/粘贴 在正常模式下(按ESC进入)按键v进入可视化模式,然后按键盘左右键或h,l键即可实现文本的选择.其它相关命令:v:按字符选择.经常使用的模式,所以亲自尝试一下它. V:按 ...

  9. C++常用字符串分割方法实例汇总

    投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-10-08我要评论 这篇文章主要介绍了C++常用字符串分割方法实例汇总,包括了strtok函数.STL.Boost等常用 ...

  10. bzoj5085: 最大

    暴力是4方的,开始我只3方(扫描的时候更新当前最大) 二分+暴力可以做到m^2logMAX 二分答案,暴力枚举可行的两个位置形成一段,对于段,最多只会有m^2种情况. #include<cstd ...