尚硅谷之JDBC

BeanHandler实现类

/*

 * BeanHandler: 把结果集的第一条记录转为创建 BeanHandler 对象时传入的 Class参数对应的对象.

 * 当JavaBean的属性名与字段名不一致时,可以通过指定别名告知属性名

 */

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

//1、连接池

DataSource ds = new ComboPooledDataSource("mypool");

//2、直接使用QueryRunner

QueryRunner qr = new QueryRunner(ds);

String sql = "select pid as id,pname,price,description from t_goods where pid =?";

Goods goods = qr.query(sql, new BeanHandler<Goods>(Goods.class), 1);

System.out.println(goods);

}

BeanListHandler实现类

/*

 * BeanListHandler: 把结果集转为一个 List, 该 List 不为 null, 但可能为空集合(size() 方法返回 0) 若

 * SQL 语句的确能够查询到记录, List 中存放创建 BeanListHandler 传入的 Class对象对应的对象.

 */

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

//1、连接池

DataSource ds = new ComboPooledDataSource("mypool");

//2、直接使用QueryRunner

QueryRunner qr = new QueryRunner(ds);

String sql = "select pid as id,pname,price,description from t_goods";

List<Goods> query = qr.query(sql, new BeanListHandler<Goods>(Goods.class));

for (Goods goods : query) {

System.out.println(goods);

}

}

MapHandler实现类

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

// 1、连接池

DataSource ds = new ComboPooledDataSource("mypool");

// 2、直接使用QueryRunner

QueryRunner qr = new QueryRunner(ds);

String sql = "select did,count(*) from employee where did = 1";

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

Set<Entry<String, Object>> entrySet = map.entrySet();

for (Entry<String, Object> entry : entrySet) {

// System.out.println(entry.getKey() +"-->" + entry.getValue());

if ("did".equals(entry.getKey())) {

System.out.println("部门编号:" + entry.getValue());

} else {

System.out.println("人数:" + entry.getValue());

}

}

}

MapListHandler实现类

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

//1、连接池

DataSource ds = new ComboPooledDataSource("mypool");

//2、直接使用QueryRunner

QueryRunner qr = new QueryRunner(ds);

String sql = "select did,count(*) from employee group by did";

/*

 * did count(*)

 *  1   7

 *  2   3

 *  3   1

 *  

 *  List:

 *  map:

 *    key(did) value(1)

 *    key(count(*) value(7)

 * 第二行

 *  map:

 *    key(did) value(2)

 *    key(count(*) value(3)

 * 第三行

 * map:

 *    key(did) value(3)

 *    key(count(*) value(1)

 *

 */

List<Map<String, Object>> query = qr.query(sql, new MapListHandler());

for (Map<String, Object> map : query) {

Set<Entry<String, Object>> entrySet = map.entrySet();

for (Entry<String, Object> entry : entrySet) {

//System.out.println(entry.getKey() +"-->" + entry.getValue());

if("did".equals(entry.getKey())){

System.out.println("部门编号:" + entry.getValue());

}else{

System.out.println("人数:" + entry.getValue());

}

}

}

}

ScalarHandler实现类

/*

 * ScalarHandler: 把结果集转为一个数值(可以是任意基本数据类型和字符串, Date 等)返回

 * ScalarHandler()只取第一行第一列

 * ScalarHandler(int columnIndex):取第一行的第columnIndex列

 * ScalarHandler(String columnName):取第一行的列名为columnName列的值

 */

@Test

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

//1、连接池

DataSource ds = new ComboPooledDataSource("mypool");

//2、直接使用QueryRunner

QueryRunner qr = new QueryRunner(ds);

// String sql = "select count(*) from t_goods";

String sql = "select max(price) from t_goods";

Object query = qr.query(sql, new ScalarHandler());

System.out.println(query);

}