javaSE 第三方插件commons-dbutils, 操作数据库的工具类, QueryRunner类, (query() 查询操作)

MySql驱动(jar包)下载:https://pan.baidu.com/s/19BYnGbO3l5MOOic5K4Ooaw  密码:mwoh

第三方插件(commons-dbutils)下载:https://pan.baidu.com/s/17cyAXHZLgiayx5Y_VHvawQ  密码:6om2

commons-dbutils-1.6.jar---右键---Build Path---Add to Build Path 


Demo.java:

package cn.xxx.demo;  
  
import java.sql.Connection;  // MySql驱动中的包
import java.sql.SQLException;  // MySql驱动中的包
import java.util.List;  
import java.util.Map;  

// 下面的包都是commons-dbutils插件(jar包)中的包  
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.xxx.domain.Sort;  // JavaBean类,实体类,必须有空参的构造器  
import cn.xxx.jdbcutil.JDBCUtilsConfig;  // 自定义的连接数据库的工具类,用于获取数据库连接对象。  
  
/* 
 * QueryRunner数据查询操作: 
 *   调用QueryRunner类方法query(Connection con,String sql,ResultSetHandler r, Object..params) 
 *   ResultSetHandler r 结果集的处理方式,传递ResultSetHandler接口实现类。不同的实现类,返回不同的'结果集'。 
 *   Object..params 对应SQL语句中的?占位符 
 *   query的返回值由不同的ResultSetHandler实现类决定。 不同的实现类,返回不同的'结果集'。 
 */  
public class Demo {  
    private static Connection con = JDBCUtilsConfig.getConnection();  
    public static void main(String[] args) throws SQLException{  
        //ResultSetHandler接口实现类有如下: (根据不同的实现类,返回不同的'结果集')  
        //ArrayHandler: 返回对象数组 Object[]; 封装第一条记录为数组  (一维)  
        //ArrayListHandler: 返回List<Object[]>; 封装所有记录为数组,并装到List集合中  (二维)  
        //BeanHandler<T>: 返回JavaBean对象(实体类对象);泛型<T>是JavaBean类; 封装第一条记录为JavaBean对象。 (JavaBean类必须有空参构造器)  
        //BeanListHandler<T>: 返回List<JavaBean类>; 封装所有记录为JavaBean对象,并装到List集合中  
        //ColumnListHandler<Object>: 返回List<Object>; 封装所有记录指定列的值,并装到List集合中  
        //ScalarHandler<T>: 返回某列值; 适用于查询结果只有一条的情况(例如SQL中的聚合函数count()等)。泛型<T>是列值的类型。  
        //MapHandler: 返回Map<String,Object>;Map<键,值> 键:列名  值:列值; 封装第一条记录的所有列到Map集合  
        //MapListHandler: 返回List<Map<String,Object>>, 封装所有记录的所有列值到List中。Map对应一条记录所有列,List对应所有记录。  
    }  
  
    public static void mapListHandler()throws SQLException{  
        QueryRunner qr = new QueryRunner();  
        String sql = "SELECT  * FROM sort";  
        //MapListHandler,返回List<Map<String,Object>>, 封装所有记录的所有列值到List中。Map对应一条记录所有列,List对应所有记录。  
        List<Map<String,Object>> list = qr.query(con, sql, new MapListHandler());  
        //遍历集合list (遍历所有记录)  
        for( Map<String,Object> map : list ){  
            for(String key : map.keySet()){ // 遍历Map (一条记录的所有列)  
                System.out.print(key+"..."+map.get(key));  
            }  
            System.out.println();  
        }

        DbUtils.closeQuietly(con);  // 关闭资源  
          
    }  
      
    public static void mapHandler()throws SQLException{  
        QueryRunner qr = new QueryRunner();  
        String sql = "SELECT  * FROM sort";  
        //MapHandler,返回Map<String,Object>;Map<键,值> 键:列名  值:列值; 封装第一条记录所有列到Map集合  
        Map<String,Object> map = qr.query(con, sql, new MapHandler());  
        //遍历Map集合  
        for(String key : map.keySet()){  
            System.out.println(key+".."+map.get(key));  
        }

        DbUtils.closeQuietly(con);  // 关闭资源  
    }  
      
    public static void scalarHandler()throws SQLException{  
        QueryRunner qr = new QueryRunner();  
        String sql = "SELECT COUNT(*) FROM sort";  
        //ScalarHandler<T>,返回某列值; 适用于查询结果只有一条的情况(例如SQL中的聚合函数count(*))  
        long count = qr.query(con, sql, new ScalarHandler<Long>());  
        System.out.println(count);

        DbUtils.closeQuietly(con);  // 关闭资源  
    }  
      
    public static void columnListHandler()throws SQLException{  
        QueryRunner qr = new QueryRunner();  
        String sql = "SELECT * FROM sort ";  
        //ColumnListHandler<Object>,返回List<Object>;将所有记录的某列值添加到List集合中  
        List<Object> list = qr.query(con, sql, new ColumnListHandler<Object>("列名"));   
        for(Object obj : list){  
            System.out.println(obj);  
        }

        DbUtils.closeQuietly(con);  // 关闭资源  
    }  
      
    public static void beanListHander()throws SQLException{  
        QueryRunner qr = new QueryRunner();  
        String sql = "SELECT * FROM sort ";  
        //BeanListHandler<T>,返回List<JavaBean类>; 没有查到结果,size()为0  
        List<Sort> list = qr.query(con, sql, new BeanListHandler<Sort>(Sort.class)); // Sort类是一个JavaBean类  
        for(Sort s : list){  
            System.out.println(s);  
        }

        DbUtils.closeQuietly(con);  // 关闭资源  
    }  
      
    public static void beanHandler()throws SQLException{  
        QueryRunner qr = new QueryRunner();  
        String sql = "SELECT * FROM sort ";  
        //BeanHandler<T>,返回 JavaBean对象(Sort对象)(实体类对象)。没有查到结果返回null   
        Sort s = qr.query(con, sql, new BeanHandler<Sort>(Sort.class)); // Sort类是JavaBean类(实体类)(必须有空参构造器)。    
        System.out.println(s);

        DbUtils.closeQuietly(con);  // 关闭资源  
    }  
      
    public static void arrayListHandler()throws SQLException{  
        QueryRunner qr = new QueryRunner();  
        String sql = "SELECT * FROM sort";        
        //ArrayListHandler,返回List<Object[]>; 没有查询到结果,size()为0  
        List<Object[]> result=  qr.query(con, sql, new ArrayListHandler());  
          
        //集合的遍历  
        for( Object[] objs  : result){  
            //遍历对象数组  
            for(Object obj : objs){  
                System.out.print(obj+"  ");  
            }  
            System.out.println();  
        }

        DbUtils.closeQuietly(con);  // 关闭资源  
    }  
      
    public static void arrayHandler()throws SQLException{  
        QueryRunner qr = new QueryRunner();  
        String sql = "SELECT * FROM sort";  
        //调用方法query执行查询  
        //ArrayHandler,返回对象数组 Object[]; 没有查询到结果,数组长度为0  
        Object[] result = qr.query(con, sql, new ArrayHandler()); // 后面可以加Object[]表示参数,替换sql中的?占位符   
        for(Object obj : result){  
            System.out.print(obj);  
        }
        
        DbUtils.closeQuietly(con);  // 关闭资源  
    }  
      
} 

JDBCUtilsConfig.java(自定义的数据库工具类,用于获取数据库连接对象):

package cn.xxx.jdbcutil;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

public class JDBCUtilsConfig {
	private static Connection con ;
	private static String driverClass;
	private static String url;
	private static String username;
	private static String password;
	
	static{  // 静态代码块,只会被执行一次
		try{
			readConfig();
			Class.forName(driverClass);
			con = DriverManager.getConnection(url, username, password);
		}catch(Exception ex){
			throw new RuntimeException("数据库连接失败");
		}
	}
	
	private static void readConfig()throws Exception{
		InputStream in = JDBCUtilsConfig.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;
	}
	
}


猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/80783764