private QueryRunner qr= new QueryRunner(DbcpUtil.getDataSource());

本文介绍使用Apache Commons DBUtils库中的不同结果集处理类,如ArrayHandler、ArrayListHandler等,来处理从数据库查询得到的数据,并提供了具体的代码示例。
package com.tfy.itheima.impl.test;


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.ColumnListHandler;
import org.apache.commons.dbutils.handlers.KeyedHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;


import com.tfy.itheima.jdbc.util.DbcpUtil;




public class ResultSetHandleTest {
private QueryRunner qr= new QueryRunner(DbcpUtil.getDataSource());
@Test
//ArrayHandler:把结果集中的第一行数据转成对象数组。
public void test1(){
try {
String sql="select * from person";

Object []objs=qr.query(sql, new ArrayHandler());
for(Object o:objs){
System.out.println(o);
}
} catch (SQLException e) {
e.printStackTrace();
}


}
@Test
//ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
public void test2(){
try{
String sql="select * from person";
List<Object[]> list=qr.query(sql, new ArrayListHandler());
for(Object[] objs:list){
System.out.println("-----------------------");
for(Object o:objs){
System.out.println(o);
}
}

}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}

}
@ Test
//ColumnListHandler:将结果集中某一列的数据存放到List中。
public void test3(){
try{
String sql="select * from person";
List<Object> list = qr.query(sql, new ColumnListHandler("name"));

for(Object o:list){
System.out.println(o);
}
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
@Test
//KeyedHandler:将结果集中的每一行数据都封装到一个Map<列名,列值>里,再把这些map再存到一个map里,其key为指定的key。
public void test4(){
try{
String sql="select * from person";
Map<Object, Map<String, Object>> bmap = qr.query(sql, new KeyedHandler());

for(Map.Entry<Object, Map<String , Object>> bme:bmap.entrySet() ){
Map<String, Object> lmap = bme.getValue();
System.out.println("------------------------");
for(Map.Entry<String,Object> lme:lmap.entrySet() ){
System.out.println(lme.getKey()+"="+lme.getValue());

}
}
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
@Test
//MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值
public void test5(){
try{
String sql="select * from person";
Map<String, Object> map = qr.query(sql, new MapHandler());
for(Map.Entry<String, Object> lme:map.entrySet()){
System.out.println(lme.getKey()+"="+lme.getValue());

}
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
@Test
//MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
public void test6(){
try{
String sql="select * from person";
List<Map<String, Object>> list = qr.query(sql, new MapListHandler());
for(Map<String, Object> map:list){
System.out.println("-------------------");
for(Map.Entry<String, Object> me:map.entrySet()){
System.out.println(me.getKey()+"="+me.getValue());
}

}
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException();
}
}
@Test
//ScalarHandler:用于只有一行且只有一列的情况。比如统计记录条数
public void test7(){
try{
String sql="select * from person";
Object obj = qr.query(sql, new ScalarHandler(1));
System.out.println(obj.getClass().getName());

int num=((Integer )obj).intValue();
// int num=((Long )obj).intValue();

num=(Integer)obj;
System.out.println(num);
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
package com.sasda; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanHandler; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Scanner; public class MilepostService { // 模拟插入里程碑信息的方法 public Milepost insertMilepostInfo() throws ParseException { Milepost milepost = new Milepost(); Scanner sc = new Scanner(System.in); System.out.println("请输入里程碑信息:"); System.out.print("里程碑名称: "); milepost.setName(sc.next()); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); System.out.print("发射时间(格式:2025-06-24): "); milepost.setLaunchtime(formatter.parse(sc.next())); System.out.print("里程碑描述: "); milepost.setDepict(sc.next()); System.out.print("里程碑状态(数字表示): "); milepost.setState(sc.nextInt()); return milepost; } public void addMilepost(Milepost milepost) throws Exception { //创建QueryRunner对象 QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); //定义插入里程碑SQL String sql = "insert into milepost(name, launchtime, depict, state)" + " values(?, ?, ?, ?)"; //设置传入SQL中的参数值 Object[] params = {milepost.getName(), milepost.getLaunchtime(), milepost.getDepict(), milepost.getState()}; //执行插入里程碑信息的SQL int count = qr.update(sql, params); //输出插入结果判断是否成功 if (count < 1) { System.out.println("新增里程碑添加失败!"); } else { System.out.println("新增里程碑添加成功!"); } } //删除里程碑信息 public void deleteMilepost(int mid) throws Exception { QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); String sql = "delete from milepost where id = ?"; int count = qr.update(sql, mid); if (count < 1) { System.out.println("删除里程碑失败!"); } else { System.out.println("删除里程碑成功!"); } } // 修改里程碑信息 public void updateMilepost(Milepost milepost ) throws Exception { QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); String sql = "update milepost set name = ?, launchtime = ?, depict = ?, state = ? where id = ?"; Object[] params = {milepost.getName(), milepost.getLaunchtime(), milepost.getDepict(), milepost.getState(), milepost.getId()}; int count = qr.update(sql, params); if (count < 1) { System.out.println("修改里程碑失败!"); } else { System.out.println("修改里程碑成功!"); } } // 可选:用于测试 main 方法 public static void main(String[] args) throws ParseException { MilepostService service = new MilepostService(); Milepost milepost = service.insertMilepostInfo(); System.out.println("您输入的里程碑信息如下:"); System.out.println(milepost); } } 帮我实现查询,修改,
07-04
package com.sxt.dao; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.apache.commons.dbutils.BasicRowProcessor; import org.apache.commons.dbutils.BeanProcessor; import org.apache.commons.dbutils.GenerousBeanProcessor; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.RowProcessor; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; import com.sxt.entity.BookDB; import com.sxt.entity.HistoryDB; import com.sxt.utils.C3p0Tool; import com.sxt.utils.PageTool; public class HistoryDao { QueryRunner queryRunner = new QueryRunner(C3p0Tool.getDataSource()); //开启驼峰自动转换 BeanProcessor bean = new GenerousBeanProcessor(); RowProcessor processor = new BasicRowProcessor(bean); /** * 添加图书借阅记录 * @return * @throws SQLException */ public Integer addHistory(HistoryDB historyDB, Connection conn) throws SQLException { QueryRunner queryRunner = new QueryRunner(); String sql = "insert into t_history (uid,name,account,bid,book_name,begin_time, end_time,status) values (?,?,?,?,?,?,?,?)"; Object[] params = {historyDB.getUid(),historyDB.getName(),historyDB.getAccount(),historyDB.getBid(), historyDB.getBookName(),historyDB.getBeginTime(),historyDB.getEndTime(),historyDB.getStatus()}; return queryRunner.update(conn, sql, params); } /** * 查询图书借阅记录 * @param currentPage * @param pageSize * @param uid * @param status * @return */ public PageTool<HistoryDB> listByPage(String currentPage, String pageSize, Integer uid, Integer status){ try { StringBuffer listSql = new StringBuffer("select *"); StringBuffer countSql = new StringBuffer("select count(*)"); StringBuffer sql = new StringBuffer(" from t_history where 1 = 1"); List<Object> params = new ArrayList<>(); if (uid != null) { sql.append(" and uid = ?"); params.add(uid); } if (status != null) { sql.append(" and status = ?"); params.add(status); } //获取总记录数 Long total = queryRunner.query(countSql.append(sql).toString(), new ScalarHandler<Long>(),params.toArray()); //初始化分页工具 PageTool<HistoryDB> pageTools = new PageTool<HistoryDB>(total.intValue(), currentPage, pageSize); sql.append(" order by begin_time desc limit ?,?"); params.add(pageTools.getStartIndex()); params.add(pageTools.getPageSize()); //当前页的数据 List<HistoryDB> list = queryRunner.query(listSql.append(sql).toString(), new BeanListHandler<HistoryDB>(HistoryDB.class, processor),params.toArray()); pageTools.setRows(list); System.out.println(pageTools); return pageTools; } catch (SQLException e) { e.printStackTrace(); } return new PageTool<HistoryDB>(0, currentPage, pageSize); } /** * 无分页·查询 * @param hid * @return */ public List<HistoryDB> list(String hid){ StringBuffer sql = new StringBuffer("select * from t_history where 1 = 1 "); List<Object> params = new ArrayList<>(); if (hid != null && hid != "") { sql.append("and hid = ?"); params.add(hid); } try { return queryRunner.query(sql.toString(), new BeanListHandler<HistoryDB>(HistoryDB.class, processor), params.toArray()); } catch (SQLException e) { e.printStackTrace(); } return null; } /** * 修改图书借阅历史记录 * @param historyDB * @param conn * @return * @throws SQLException */ public Integer updHistory(HistoryDB historyDB, Connection conn) throws SQLException { QueryRunner qr = new QueryRunner(); String sql = "update t_history set status = ? where hid = ?"; Object[] params = {historyDB.getStatus(), historyDB.getHid()}; return qr.update(conn, sql, params); } public Integer updHistory(HistoryDB historyDB) throws SQLException { String sql = "update t_history set end_time = ? where hid = ?"; Object[] params = {historyDB.getEndTime(), historyDB.getHid()}; return queryRunner.update(sql, params); } }
10-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值