package cn.QueryRunnerDemo1;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.DbUtils;
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 cn.liju.jdbcutils.JDBCUtilsConfig;
//这里是我写的一个连接在上一篇
import cn.lijun.domain.Sort;
public class QueryRunnerdemo {
private static Connection con = JDBCUtilsConfig.getConection();
public static void main(String[] args) throws SQLException {
//1结果集处理ArrayHandler
//arrayHandler();
//arrayListHandler();
//beanHandler();
//beanListHandler();
//columnListHandler();
// scalarHandle();
//mapHandler();
mapListHandler();
}
//11.8结果集处理MapListHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合
public static void mapListHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql="SELECT * FROM sort";
//调用QueryRunner方法 执行查询 返回列名的集合
List<Map<String,Object>> list= qr.query(con, sql, new MapListHandler());
DbUtils.close(con);
//遍历集合
for(Map<String,Object> map:list){
for(String key:map.keySet()){
System.out.print(key+":"+map.get(key)+" ");
}
System.out.println();
}
}
//11.7结果集处理MapHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
public static void mapHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql="SELECT * FROM sort";
//调用QueryRunner方法 执行查询 返回列名的集合
Map<String,Object> map= qr.query(con, sql, new MapHandler());
DbUtils.close(con);
for(String key:map.keySet()){
System.out.println(key+" "+map.get(key));
}
}
//11.6结果集处理ScalarHandler 查询后只有一个结果 它是用于单数据。例如select count(*) from 表操作。
public static void scalarHandle() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql="SELECT COUNT(*) FROM sort";
//调用QueryRunner方法 执行查询 返回列名的集合
Long ls = qr.query(con, sql, new ScalarHandler<Long>());
DbUtils.close(con);
System.out.println(ls);
}
//11.5结果集处理ColumnListHandler 将结果集中指定的列的字段值,封装到一个List集合中
public static void columnListHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql="SELECT * FROM sort";
//调用QueryRunner方法 执行查询 返回列名的集合
List<Object> ls = qr.query(con, sql, new ColumnListHandler<Object>("sname"));
DbUtils.close(con);
for(Object l:ls){
System.out.println(l);
}
}
//11.4结果集处理BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
public static void beanListHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql="SELECT * FROM sort";
//调用QueryRunner方法 执行查询 返回BeanListHandler
List<Sort> ls = qr.query(con, sql, new BeanListHandler<Sort>(Sort.class));
DbUtils.close(con);
for(Sort l:ls){
System.out.println(l);
}
}
//11.3结果集处理BeanHandler 将结果集中第一条记录封装到一个指定的javaBean中。
public static void beanHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql="SELECT * FROM sort";
//调用QueryRunner方法 执行查询 返回BeanHandler
Sort s = qr.query(con, sql, new BeanHandler<>(Sort.class));
DbUtils.close(con);
System.out.println(s);
}
//11.2结果集处理ArrayListHandler 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
public static void arrayListHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql="SELECT * FROM sort";
//调用QueryRunner方法 执行查询 返回的是集合
List<Object[]> query = qr.query(con, sql, new ArrayListHandler());
DbUtils.close(con);
for(Object[] qiang:query){
for(Object obj:qiang){
System.out.print(obj+" ");
}
System.out.println();
}
}
//1结果集处理ArrayHandler 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
public static void arrayHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql="SELECT * FROM sort";
//调用QueryRunner方法 执行查询
Object[] query = qr.query(con, sql, new ArrayHandler());
DbUtils.close(con);
for(Object qiang:query){
System.out.println(qiang);
}
}
}