QueryRunner类对数据表的查(8种结果集处理方式)
定义Sort类
public Sort() {
super();
// TODO Auto-generated constructor stub
}
public Sort(int uid, String uname, String uaddress, String tel) {
super();
this.uid = uid;
this.uname = uname;
this.uaddress = uaddress;
this.tel = tel;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUaddress() {
return uaddress;
}
public void setUaddress(String uaddress) {
this.uaddress = uaddress;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
@Override
public String toString() {
return "Sort [uid=" + uid + ", uname=" + uname + ", uaddress=" + uaddress + ", tel=" + tel + "]";
}
}
定义databaseproperties文件
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/shujuku
username=root
password=***
创建数据库连接对象
package jdbcuitl;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
public class JDBCUitlscon {
private static Connection con;
private static String driverClass;
private static String url;
private static String username;
private static String password;
static{
try{
readdatabase();
Class.forName(driverClass);
con = DriverManager.getConnection(url, username, password);
//System.out.println(con);
}catch(Exception ex){
throw new RuntimeException("数据库链接失败");
}
}
public static void readdatabase() throws IOException{
InputStream in = JDBCUitlscon.class.getClassLoader().getResourceAsStream("database.properties");
Properties pro = new Properties();
pro.load(in);
driverClass = pro.getProperty("driverClass");
url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
}
public static Connection getConnection()
{
return con;
}
}
八种实现方法
package cn.itcast.demo2;
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 cn.itcast.domain.Sort;
import jdbcuitl.JDBCUitlscon;
public class QueryRunnerDemo1 {
private static Connection con = JDBCUitlscon.getConnection();
public static void main(String[] args) throws SQLException {
//arrayHandler();
//arraylistHandler();
//beanhandler();
//beanlisthandler();
//Columnlisthandler();
//Scalarhandler();
//maphandler();
maplisthandler();
}
//结果集第八种 MapListHandler--结果集每一行存储到到集合Map中
//Map<键,值> 键-列明 值-数据
//Map集合过多存储到List集合中
public static void maplisthandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM users";
List<Map<String, Object>> s = qr.query(con, sql, new MapListHandler());
//遍历Map
for (Map<String, Object> map : s) {
for (String key : map.keySet()) {
System.out.print(key+"..."+map.get(key)+"\t");
}
System.out.println();
}
}
//结果集第七种 MapHandler--结果集第一行封装到集合Map中,Map<键,值>
public static void maphandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM users";
Map<String, Object> s = qr.query(con, sql, new MapHandler());
//遍历Map
for (String key : s.keySet()) {
System.out.println(key+".."+s.get(key));
}
}
//结果集第6种 ScalarHandler--对于查询只有一个结果
public static void Scalarhandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT COUNT(*) FROM users";
long s = qr.query(con, sql, new ScalarHandler<Long>());
System.out.println(s);
}
//结果集第五种 ColumnListhandler--结果集,指定列的数据,存储到List集合
//List<Object>每个列数据类型不同
public static void Columnlisthandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM users";
List<Object> s = qr.query(con, sql, new ColumnListHandler<Object>("uname"));
for (Object sort : s) {
System.out.println(sort);
}
}
//结果集第四种 BeanListhandler--将结果每一行数据封装到JavaBean对象,
//多个javaBean对象封装到List集合中
public static void beanlisthandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM users";
List<Sort> s = qr.query(con, sql, new BeanListHandler<Sort>(Sort.class));
for (Sort sort : s) {
System.out.println(sort);
}
}
//结果集第三种 Beanhandler---将结果集第一行封装程JavaBean对象
public static void beanhandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM users WHERE uid=5";
Sort s = qr.query(con, sql, new BeanHandler<Sort>(Sort.class));
System.out.println(s);
}
//结果集第二种 ArrayListhandler--将结果集的每一行封装到对象数组中,出现很多集合
//存到集合list中
public static void arraylistHandler()throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM zhangwu WHERE zid>2";
List<Object[]> array = qr.query(con, sql, new ArrayListHandler());
//System.out.println(array.getClass());
System.out.println(array.size());
for (Object[] objs : array) {
for (Object obj : objs) {
System.out.print(obj+" ");
}
System.out.println();
}
}
//结果集第一种 Arrayhandler--将结果集第一行存储到对像数组中
public static void arrayHandler()throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM zhangwu";
Object[] array = qr.query(con, sql, new ArrayHandler());
for (Object obj : array) {
System.out.print(obj+"\t");
}
}
}