JavaWeb之DBUtils

CREATE DATABASE day0528;
USE day0528;
CREATE TABLE t_user(
 id INT PRIMARY KEY AUTO_INCREMENT,
 NAME VARCHAR(40),
 PASSWORD VARCHAR(40),
 email VARCHAR(40),
 birthday DATE
);

INSERT INTO t_user(NAME,PASSWORD,email,birthday) VALUES('小龙女','16','[email protected]','2001-1-1');
INSERT INTO t_user(NAME,PASSWORD,email,birthday) VALUES('姬如雪','17','[email protected]','2002-2-2');
INSERT INTO t_user(NAME,PASSWORD,email,birthday) VALUES('女帝','18','[email protected]','2003-3-3');

SELECT * FROM t_user;

User.java

package zh.jdbc.demo;

import java.util.Date;

public class User {

	private Integer id;
	private String name;
	private String password;
	private String email;
	private Date birthday;// java.util.Date

	public User() {

	}

	public User(Integer id, String name, String password, String email,
			Date birthday) {
		super();
		this.id = id;
		this.name = name;
		this.password = password;
		this.email = email;
		this.birthday = birthday;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", password=" + password
				+ ", email=" + email + ", birthday=" + birthday + "]";
	}

}

DBUtilsDemo.java

package zh.dbutils.demo;

import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.sql.DataSource;

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.BeanMapHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.KeyedHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;

import zh.jdbc.demo.User;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * DBUtils使用:QueryRunner类和ResultSetHandler接口
 * 
 * @author ZH
 *
 */
public class DBUtilsDemo {

	// c3p0连接池
	private DataSource dataSource = new ComboPooledDataSource();

	/**
	 * ArrayHandler:将单行结果集封装成数组
	 * 
	 * @throws SQLException
	 */
	@Test
	public void query1() throws SQLException {

		QueryRunner queryRunner = new QueryRunner(dataSource);
		String sql = "select * from t_user where id = ?";
		Object[] array = queryRunner.query(sql, new ArrayHandler(), 1);
		System.out.println(Arrays.toString(array));
		// [1, 小龙女, 16, [email protected], 2001-01-01]
	}

	/**
	 * ArrayListHandler:将结果集中每一行数据封装到一个数组,再把数组添加到List集合
	 * 
	 * @throws SQLException
	 */
	@Test
	public void query2() throws SQLException {

		QueryRunner queryRunner = new QueryRunner(dataSource);
		String sql = "select * from t_user";
		List<Object[]> arrayList = queryRunner.query(sql,
				new ArrayListHandler());
		for (Object[] array : arrayList) {
			System.out.println(Arrays.toString(array));
		}
		// [1, 小龙女, 16, [email protected], 2001-01-01]
		// [2, 姬如雪, 17, [email protected], 2002-02-02]
		// [3, 女帝, 18, [email protected], 2003-03-03]
	}

	/**
	 * BeanHandler:将单行结果集封装到JavaBean
	 * 
	 * @throws SQLException
	 */
	@Test
	public void query3() throws SQLException {

		QueryRunner queryRunner = new QueryRunner(dataSource);
		String sql = "select * from t_user where id = ?";
		User user = queryRunner
				.query(sql, new BeanHandler<User>(User.class), 1);
		System.out.println(user);
		// User [id=1, name=小龙女, password=16, [email protected],
		// birthday=2001-01-01]
	}

	/**
	 * BeanListHanlder:将结果集中每一行数据封装到一个JavaBean对象,再将对象添加到List集合
	 * 
	 * @throws SQLException
	 */
	@Test
	public void query4() throws SQLException {

		QueryRunner queryRunner = new QueryRunner(dataSource);
		String sql = "select * from t_user";
		List<User> userList = queryRunner.query(sql, new BeanListHandler<User>(
				User.class));
		for (User user : userList) {
			System.out.println(user);
		}
		// User [id=1, name=小龙女, password=16, [email protected],
		// birthday=2001-01-01]
		// User [id=2, name=姬如雪, password=17, [email protected],
		// birthday=2002-02-02]
		// User [id=3, name=女帝, password=18, [email protected],
		// birthday=2003-03-03]
	}

	/**
	 * BeanMapHandler:将结果集中每一行数据封装到一个JavaBean对象,再根据指定的key将对象添加到Map集合
	 * 
	 * @throws SQLException
	 */
	@Test
	public void query5() throws SQLException {

		QueryRunner queryRunner = new QueryRunner(dataSource);
		String sql = "select * from t_user";
		Map<Integer, User> userMap = queryRunner.query(sql,
				new BeanMapHandler<Integer, User>(User.class, "id"));

		Set<Entry<Integer, User>> entrySet = userMap.entrySet();
		for (Entry<Integer, User> entry : entrySet) {
			System.out.println(entry.getKey() + ":" + entry.getValue());
		}
		// 1:User [id=1, name=小龙女, password=16, [email protected],
		// birthday=2001-01-01]
		// 2:User [id=2, name=姬如雪, password=17, [email protected],
		// birthday=2002-02-02]
		// 3:User [id=3, name=女帝, password=18, [email protected],
		// birthday=2003-03-03]
	}

	/**
	 * MapHandler:将单行结果集数据封装到Map集合,key是列名,value是对应的值
	 * 
	 * @throws SQLException
	 */
	@Test
	public void query6() throws SQLException {

		QueryRunner queryRunner = new QueryRunner(dataSource);
		String sql = "select * from t_user where id = ?";
		Map<String, Object> map = queryRunner.query(sql, new MapHandler(), 1);
		System.out.println(map);
		// {id=1, name=小龙女, password=16, [email protected], birthday=2001-01-01}
	}

	/**
	 * MapListHandler:将单行结果集数据封装到Map集合,key是列名,value是对应的值;再将Map集合添加到List集合
	 * 
	 * @throws SQLException
	 */
	@Test
	public void query7() throws SQLException {

		QueryRunner queryRunner = new QueryRunner(dataSource);
		String sql = "select * from t_user";
		List<Map<String, Object>> mapList = queryRunner.query(sql,
				new MapListHandler());
		for (Map<String, Object> map : mapList) {
			System.out.println(map);
		}
		// {id=1, name=小龙女, password=16, [email protected], birthday=2001-01-01}
		// {id=2, name=姬如雪, password=17, [email protected], birthday=2002-02-02}
		// {id=3, name=女帝, password=18, [email protected], birthday=2003-03-03}
	}

	/**
	 * ColumnListHandler:将结果集中某一列添加到List集合
	 * 
	 * @throws SQLException
	 */
	@Test
	public void query8() throws SQLException {

		QueryRunner queryRunner = new QueryRunner(dataSource);
		String sql = "select * from t_user";
		List<String> columnList = queryRunner.query(sql,
				new ColumnListHandler<String>("name"));
		System.out.println(columnList);
		// [小龙女, 姬如雪, 女帝]
	}

	/**
	 * ScalarHandler:将单行结果集中某一列字段值封装到Object
	 * 
	 * @throws SQLException
	 */
	@Test
	public void query9() throws SQLException {

		QueryRunner queryRunner = new QueryRunner(dataSource);
		String sql = "select * from t_user where id = ?";
		String hang = queryRunner.query(sql, new ScalarHandler<String>("name"),
				1);
		System.out.println(hang);
		// 小龙女
	}

	/**
	 * KeyedHandler:将结果集中每一行封装到一个Map集合,再根据指定key,将各个Map集合封装到一个Map集合
	 * 
	 * @throws SQLException
	 */
	@Test
	public void query10() throws SQLException {

		QueryRunner queryRunner = new QueryRunner(dataSource);
		String sql = "select * from t_user";
		Map<Integer, Map<String, Object>> map = queryRunner.query(sql,
				new KeyedHandler<Integer>("id"));
		Set<Entry<Integer, Map<String, Object>>> entrySet = map.entrySet();
		for (Entry<Integer, Map<String, Object>> entry : entrySet) {
			Integer key = entry.getKey();
			Map<String, Object> value = entry.getValue();
			System.out.println(key + ":" + value.toString());
		}
		// 1:{id=1, name=小龙女, password=16, [email protected], birthday=2001-01-01}
		// 2:{id=2, name=姬如雪, password=17, [email protected], birthday=2002-02-02}
		// 3:{id=3, name=女帝, password=18, [email protected], birthday=2003-03-03}
	}

}

猜你喜欢

转载自blog.csdn.net/qq_41706150/article/details/80499628