A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Black_Y 初级黑马   /  2018-5-21 15:17  /  607 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2018-5-23 14:43 编辑

DBUtils


##QueryRunner对象:核心运行类(执行CRUD和批处理)
```
构造方法
QueryRunner()
QueryRunner(DataSource ds)
类中方法
查询方法query
增删改方法Updata
```
##一般情况下如果哦执行CRUD的操作
```
构造:

QueryRunner(DataSource ds);
方法:
int update(String sql,Object... args);
T query(String sql,ResultSetHandler rsh,Object... args);
```
##如果有事务管理的话使用另一套完成CRUD的操作
```
构造:
QueryRunner();
方法:
int update(Connection conn,String sql,Object... args);
T query(Connection conn,String sql,ResultSetHandler rsh,Object... args);

```
###DBUtils类处理事务一个提交方法一个回滚方法














#DBUtils的使用之ResultSetHandler的实现类
###ArrayHandler(将一条记录封装到一个数组当中.这个数组应该是Oebject[])
###ArrayListHandler(将多条记录封装到一个装有Object数组的List集合中)


##封装对象到BeanHandler
```
注意结果集和别名的使用

BeanHandler: 将一条记录封装到一个JavaBean中
public void demo3() throws SQLException{
    QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource());
    Account account = queryRunner.query("select * from account where id=?",new BeanHandler<Account>(Account.class),1);
    syso(account);
```

##BeanListHandler:将多条记录封装到一个装有JavaBean的List集合中.
一条记录就是i一个Java的对象(JavaBean),如果多条记录(多个Java的对象),将多个Java对象撞到一个List集合中.
```
public void demo4() throws SQLException{
    QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource());
    List<Account> list = queryRunner.query("select * from account",new BeanListHandler<Account>(Account.class))
    for(Account account : list){
        syso(account);
    }
}

```
##技术点
```
决定一个JavaBean类的属性的不是由自己定义的属性决定的,而是由set和get方法来决定.
如果有setMoney()方法或者getMoney()方法,即使不定义money这个属性,这个类中也会默认有money这个属性
```
#DBUtils的使用之ResultSetHandler的实现类
##MapHandler:将一条记录封装到一个Map集合中,Map的key是列名,Map的value就是表中列的记录值.
```
public void demo5() throws SQLException{
    QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource());
    Map<String,Object> map = queryRunner.query("select* from account where id=?",new MapHandler(),4);
    syso(map);
}
```


##MapListHandler:将多条记录封装到一个装有Map的List集合中.
```
public void demo6() throws SQLException{
    QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource());
    List<Map<String,Object>> list = queryRunner.query("select * from account",new MapListHandler());
    for(Map<String,Object> map: list){
        syso(map);
    }

}
```
##实现类四
```
ColumnListHandler ScalarHandler KeyedHandler
```
###ColumnListHandler:将数据中的某列封装到List集合中
```
public void demo7() throws SQLException{
    QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource());
    List<Object> list = queryRunner.query("select name,money from account",new ColumnListHandler("name"));
    for(Object object : list){
        syso(object);

    }
}
```
###ScalarHandler:将单个值封装
```
public void demo8() throws SQLException{
    QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource());
    Object obj = queryRunner.query("select count(*) from account",new ScalarHandler());
    syso(obj);

}
```
###KeyedHandler(了解):将一条记录封装到一个Map集合中.将多条记录封装到一个装有Map集合的Map集合中.而且外面的Map的key是可以指定的.
```
public void demo9() throws SQLException{
    QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource());
    Map<Object,Map<String,Object>> map=queryRunner.query("select * from account",new KeyedHandler("id"));
    for(Object key : map.keySet()){
        syso(key+" "+map.get(key));
    }
}
```

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马