一 BeanUtils组件
作用:简化javabean的操作。
使用方法:
- 导入jar包(commons-beanutils-1.8.0.jar)
- 导入日志支持jar包(commons-logging-1.1.1.jar)
1.1 对象赋值
//实现对象和对象属性的拷贝
Admin admin = new Admin();
//对象属性的拷贝
BeanUtils.copyProperty(admin,"name","jack");//第一个参数对象,第二个参数属性名,第三个参数属性值
//对象的拷贝
Admin newAdmin = new Admin();
BeanUtils.copyProperties(newAdmin,admin);
//map数据拷贝到对象中 注意:map中的key要与javabean的属性名称一致
Map<String,Object>map = new HashMap<String,Object>();
map.put("name","jerry");
map.put("age",29);
BeanUtils.populate(admin,map);
1.2 类型转换器
String birth = "1996-10-01"
Admin admin = new Admin();
//注册日期类型转换器
ConvertUtils.register(new DateLocaleConverter(),Date.class);
BeanUtils.copyProperty(admin,"birth",birth);
二 DbUtils组件
作用:简化jdbc操作
使用方法: 引入commons-dbutils-1.6.jar包。
DbUtils的核心工具类:QueryRunner
2.1相关API
更新操作的API:
//需要传入Connection连接对象
Int update(Connection conn, String sql, Object param); //执行更新带一个占位符的sql
Int update(Connection conn, String sql, Object… param); //执行更新带多个占位符的sql
Int[] batch(Connection conn, String sql, Object[][] params);//批处理
//不需要传入Connection连接对象,如果调用DbUtils组件的操作数据库方法,没有传入连接对象,那么在实例化QueryRunner对象的时候需要传入数据源对象: QueryRunner qr = new QueryRunner(ds);
Int update( String sql, Object param);
Int update( String sql, Object… param);
Int[] batch( String sql, Object[][] params)
示例代码:
String sql = "delete from admin where id=?";
// 连接对象
conn = JdbcUtil.getConnection();
// 创建DbUtils核心工具类对象
QueryRunner qr = new QueryRunner();
qr.update(conn, sql, 26);
// 关闭
DbUtils.close(conn);
查询操作的API:
query(Connection conn ,String sql, ResultSetHandler<T> rsh, Object... params)
封装结果的对象:
BeanHandler: 查询返回单个对象
String sql = "select * from admin where id=?";
// 获取连接
conn = JdbcUtil.getConnection();
// 创建DbUtils核心工具类对象
QueryRunner qr = new QueryRunner();
// 查询返回单个对象
Admin admin = qr.query(conn, sql, new BeanHandler<Admin>(Admin.class), 29);
System.out.println(admin);
conn.close();
BeanListHandler: 查询返回list集合,集合元素是指定的对象
String sql = "select * from admin";
conn = JdbcUtil.getConnection();
QueryRunner qr = new QueryRunner();
// 查询全部数据
List<Admin> list = qr.query(conn, sql, new BeanListHandler<Admin>(Admin.class));
System.out.println(list);
conn.close();
ArrayHandler, 查询返回结果记录的第一行,封装对对象数组, 即返回:Object[]
ArrayListHandler, 把查询的每一行都封装为对象数组,再添加到list集合中
ScalarHandler 查询返回结果记录的第一行的第一列 (在聚合函数统计的时候用)
MapHandler 查询返回结果的第一条记录封装为map
String sql = "select * from admin";
conn = JdbcUtil.getConnection();
QueryRunner qr = new QueryRunner();
// 查询
//Object[] obj = qr.query(conn, sql, new ArrayHandler());
//List<Object[]> list = qr.query(conn, sql, new ArrayListHandler());
//Long num = qr.query(conn, sql, new ScalarHandler<Long>());
Map<String, Object> map = qr.query(conn,sql, new MapHandler());
conn.close();
使用示例:
String sql = "select * from admin where id =?"
//获取连接
Connection conn = JdbcUtil.getConnection();
//创建DbUtils核心工具类
QueryRunner qr = new QueryRunner();
//查询返回单个对象
Admin admin = qr.query(conn,sql,new BeanHandler<Admin>(Admin.class),1);