DBUtills:

***********************

1:创建对象:QueryRunner的对象,其中创建的方式有两种:

  ①QueryRunner qr = new QueryRunner();

    **********这种是不用传递形参的;

  ②QueryRunner qr = new QueryRunner(new DataSource ());

2:利用 qr 来进行对数据库的增删改

  都是来调用qr.update(sql,params)

3:最重要的是对数据的查询操作

  来调用qr.query(sql,resulSettHandler<>(type),params)

  其中ResultHandler是一个泛型类,根据查询到的返回的值得类型不同,有与之对应的实现类

  ①:当返回的是一个java bean时,可以使用BeanHandler<T>(type),一般用于查询结果式单行的

  ②:当返回的是一个 多行的结果集时,我们可以使用 BeanListHandler<T>(type) 来返回一个Java bean 的List

××③:当进行多表查询时,公共的字段就要在一个类中把字段的类型改为另一个类的类型,此时可以通过查询两次然后使用 set 方法来把一个结果当做变量设置进去,但是这样做,查询两次是十分耗费资源的。因此我们可以通过 MapHandler() 来返回一个 map 对象,得到 map 后就好办了,我们是用自己的小工具 toBean 来把一个 map 转化为一个Java bean

  

public static <T> T toBean(Map map,Class<T> clazz) {
T bean;
try {
bean = clazz.newInstance();
BeanUtils.populate(bean, map);
} catch (Exception e) {
throw new RuntimeException(e);// TODO: handle exception
}
return bean;
}
 public Student load2(String sid) throws SQLException {
String sql = "SELECT * FROM students,provinces WHERE sid = ? AND students.p_name=provinces.p_name";
// Student student = qr.query(sql, new BeanHandler<Student>(Student.class),sid);
//// System.out.println(student.toString());
// Province p_name = qr.query(sql, new BeanHandler<Province>(Province.class),sid);
//// System.out.println(p_name.toString());
// student.setProvince(p_name); Map map = qr.query(sql, new MapHandler(),sid);
System.out.println(map);
Student stu = CommonUtils.toBean(map, Student.class);
System.out.println(stu);
Province pro = CommonUtils.toBean(map, Province.class);
stu.setProvince(pro);
return stu;
}

  ④:多表查询时返回多条消息时,ResultSetHandler 的实现类可以使用 MapListHandler()

  ⑤:当返回的结果集是某一行时,我们可以使用ColumnsListHandler();

  ⑥:当返回的结果集是单行单列时,我们可以使用ScalarHandler()结果集处理器

学习DButils笔记的更多相关文章

  1. 每天成长一点---WEB前端学习入门笔记

    WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...

  2. DSP28377S - ADC学习编程笔记

    DSP28377S -  ADC学习编程笔记 彭会锋 2016-08-04  20:19:52 1 ADC类型导致的配置区别 F28377S的ADC类型是Type 4类型,我的理解是不同类型的ADC采 ...

  3. 学习ReactNative笔记整理一___JavaScript基础

    学习ReactNative笔记整理一___JavaScript基础 ★★★笔记时间- 2017-1-9 ★★★ 前言: 现在跨平台是一个趋势,这样可以减少开发和维护的成本.第一次看是看的ReactNa ...

  4. 深度学习word2vec笔记之算法篇

    深度学习word2vec笔记之算法篇 声明:  本文转自推酷中的一篇博文http://www.tuicool.com/articles/fmuyamf,若有错误望海涵 前言 在看word2vec的资料 ...

  5. 强化学习读书笔记 - 02 - 多臂老O虎O机问题

    # 强化学习读书笔记 - 02 - 多臂老O虎O机问题 学习笔记: [Reinforcement Learning: An Introduction, Richard S. Sutton and An ...

  6. 强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)

    强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods) 学习笔记: Reinforcement Learning: An Introduction, Richard S ...

  7. 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)

    强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning) 学习笔记: Reinforcement Learning: An Introductio ...

  8. (转)深度学习word2vec笔记之基础篇

    深度学习word2vec笔记之基础篇 声明: 1)该博文是多位博主以及多位文档资料的主人所无私奉献的论文资料整理的.具体引用的资料请看参考文献.具体的版本声明也参考原文献 2)本文仅供学术交流,非商用 ...

  9. 深度学习word2vec笔记之基础篇

    作者为falao_beiliu. 作者:杨超链接:http://www.zhihu.com/question/21661274/answer/19331979来源:知乎著作权归作者所有.商业转载请联系 ...

随机推荐

  1. PHP var_dump()函数输出不完整,有省略号?解决办法

    xdebug.var_display_max_children=10240xdebug.var_display_max_data=10240xdebug.var_display_max_depth=1 ...

  2. pandas 必背函数操作

    1.五个常用属性 index,columns,shape,values,dtypes2.常用函数:set_index,reset_index,del df['column_name'],pd.read ...

  3. 执行Python出现LookupError: unknown encoding: cp65001解决办法

    执行Python出现LookupError: unknown encoding: cp65001错误 dos下执行以下命令即可 chcp 以上.

  4. Java菜鸟浅谈OCR

    什么是OCR? 粗暴点说就是图片文本识别!正规点的说法就是:(Optical Character Recognition,光学电子识别) 最近公司开展新项目,考虑到实名认证这方面,然后还要上传身份证正 ...

  5. Tarjan求割点(割顶) 割边(桥)

    割点的定义: 感性理解,所谓割点就是在无向连通图中去掉这个点和所有和这个点有关的边之后,原先连通的块就会相互分离变成至少两个分离的连通块的点. 举个例子: 图中的4号点就是割点,因为去掉4号点和有关边 ...

  6. swift中单例类的创建

    1.最经典的 class TheOneAndOnlyKraken {     static let sharedInstance = TheOneAndOnlyKraken()     private ...

  7. angular.isNumber()

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. Javascript Date类型

      Date 类型使用自 UTC 1970 年 1 月 1日 午夜 开始经过的毫秒数来保存日期.   创建日期对象 var now = new Date();//获取当前日期   Date.parse ...

  9. fatal error LNK1120: 11 unresolved externals

    一般原因是函数声明没有定义,或者c++文件没有包含include进来

  10. 纯css3实现只适应的正方形

    纯 CSS 实现自适应正方形 Table of Contents 方案一:CSS3 vw 单位 方案二:设置垂直方向的 padding 撑开容器 方案三:利用伪元素的 margin(padding)- ...