javaSE学习笔记————DBUtils

javaSE传智博客视频学习day30笔记————DButils

内容

  1. DBUtils是什么
  2. 资源地址与使用方法
  3. 核心类
  4. 修改的操作
  5. 查询的8种结果集处理类

DBUtils是什么

DBUtils是apache commons组件一个成员,它的目的是简化JDBC的开发。要使用它必须导入commons-dbutils-1.6.jar才能使用。

资源地址

百度:commons-dbutils-1.6.jar

使用方法

直接导包

核心类

QueryRunner是核心类,它有两个方法:处理增删改的update()与处理查询的query()。

增删改

增删改是用update(Connection conn, String sql, Object... params)方法,返回值是被处理的行数,看见参数,我们就知道怎么做了:

第一个是连接对象,第二是sql语句,第三个是参数列表。

一个例子:

获取连接对象的脚本:

public class JDBCUtils {
	private static String DRIVERNAME="com.mysql.jdbc.Driver";
	private static String URL="jdbc:mysql://localhost:3306/account_manager";
	private static String USER="root";
	private static String PASSWORD="123";
	
	static{
		try {
			Class.forName(DRIVERNAME);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static Connection getConnection() throws SQLException{
		Connection con = DriverManager.getConnection(URL, USER, PASSWORD);
		return con;
	}
}

static{   代码   }的写法叫做静态代码块,当类被加载时(如创建对象,调用变量或者方法),就会执行一次,并且只会执行一次。

再调用就不会执行了。

增加:

	public static void   add() throws SQLException{
		//创建一个QueryRunner对象
		QueryRunner qr = new QueryRunner();
		//增加操作,发现需要三个参数 链接对象 sql语句 参数
//		int line = qr.update(conn, sql, param);
		//获取链接
		Connection conn = JDBCUtils.getConnection();
		//sql语句
		String sql = "INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (?,?,?,?,?,?);";
		//参数
		Object [] params={16,"工资收入",5000,"现金","2016-10-30","又开资"};
		//执行
		int line = qr.update(conn, sql, params);
		System.out.println(line);
	}

删除与修改只是变了sql语句。

查询的8种结果集处理类

查询只是调用了一个query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)方法。

第一参数是连接对象

第二个是sql

第三个是ResultSetHandler结果集处理类(用于储存数据的类)

第四个是参数数组

下面的八种类都是实现了ResultSetHandler的接口

ArrayHandler :

会把数据的第一行数据返回到Object的数组中

	public static void method1() throws SQLException{
		/*
		 * ArrayHandler 对象返回一个Object数组,并且只返回第一行的数据
		 */
		//获取QueryRunner 对象
		QueryRunner qr = new QueryRunner();
		//sql
		String sql ="SELECT * FROM gjp_zhangwu where zwid in (10,11) ";
		//参数
		Object [] param ={};
		//链接
		Connection conn = JDBCUtils.getConnection();
		//查询
		Object [] objArray = qr.query(conn, sql, new ArrayHandler(),param);
		//打印
		System.out.println(Arrays.toString(objArray));
	}

ArrayListHandler:

	public static void method2() throws SQLException{
		/*
		 * ArrayListHandler
		 * 返回时List集合类型是Object[]
		 * 返回全部的数据
		 */
		QueryRunner qr = new QueryRunner();
		Object [] params={};
		List<Object[]> list = qr.query
				(JDBCUtils.getConnection(),
				"SELECT * FROM gjp_zhangwu where zwid in (10,11) ",
				new ArrayListHandler(),
				params);
		for(Object [] b:list){
			System.out.println(Arrays.toString(b));
		}
		
	}

BeanHandler:

BeanHandler把数据放到了一个类的对象中,数据存放在了类的成员变量中。

	public static void method3() throws SQLException{
		/*
		 * 将得到的数据返回一个JavaBean类型中
		 * 只返回第一行
		 */
		QueryRunner qr = new QueryRunner();
		String sql ="SELECT * FROM gjp_zhangwu where zwid=?";
		Object [] params ={3};
		Connection conn = JDBCUtils.getConnection();
		ZhangWu zw = qr.query(conn, sql, new BeanHandler<ZhangWu>(ZhangWu.class),params);
		System.out.println(zw);
		
	}

BeanListHandler:

	public static void method4() throws SQLException{
		/*
		 * BeanListHandler 
		 * 返回一个javaBean的集合
		 * 所有的数据
		 */
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM gjp_zhangwu";
		Connection conn = JDBCUtils.getConnection();
		List<ZhangWu> list =  qr.query(conn, sql, new BeanListHandler<ZhangWu>(ZhangWu.class));
		for(ZhangWu s :list){
			System.out.println(s);
		}
		
	}

ColumnListHandler:

	public static void method5() throws SQLException{
		/*
		 * 返回一列的数据
		 * 
		 */
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT flname FROM gjp_zhangwu ";
		Connection conn  = JDBCUtils.getConnection();
		List<String> list = qr.query(conn, sql, new ColumnListHandler<String>());
		System.out.println(list);
	}

ScalarHandler:

	public static void method6() throws SQLException{
		/*
		 * 只返回一个数据
		 */
		QueryRunner qr =new QueryRunner();
		String sql ="SELECT MAX(money) FROM gjp_zhangwu";
		Connection conn = JDBCUtils.getConnection();
		Double d = qr.query(conn, sql, new ScalarHandler<Double>());
		System.out.println(d);
	}	

MapHandler:

	public static void method7() throws SQLException{
		/*
		 * 返回第一行数据键值对
		 */
		QueryRunner qr =new QueryRunner();
		String sql ="SELECT * FROM gjp_zhangwu";
		Connection conn  = JDBCUtils.getConnection();
		Map<String,Object> map = qr.query(conn, sql, new MapHandler());
		for(String s :map.keySet()){
			System.out.println(map.get(s));
		}
		
	}

MapListHandler:

	public static void method8() throws SQLException{
		/*
		 * 返回所有的数据以键值对的形式
		 */
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM gjp_zhangwu";
		Connection conn = JDBCUtils.getConnection();
		List<Map<String,Object>> list =qr.query(conn, sql, new MapListHandler());
		for(Map<String,Object> m:list){
			for(String s :m.keySet()){
				System.out.print(m.get(s));
			}
			System.out.println();
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值