学习DButils笔记
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笔记的更多相关文章
- 每天成长一点---WEB前端学习入门笔记
WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...
- DSP28377S - ADC学习编程笔记
DSP28377S - ADC学习编程笔记 彭会锋 2016-08-04 20:19:52 1 ADC类型导致的配置区别 F28377S的ADC类型是Type 4类型,我的理解是不同类型的ADC采 ...
- 学习ReactNative笔记整理一___JavaScript基础
学习ReactNative笔记整理一___JavaScript基础 ★★★笔记时间- 2017-1-9 ★★★ 前言: 现在跨平台是一个趋势,这样可以减少开发和维护的成本.第一次看是看的ReactNa ...
- 深度学习word2vec笔记之算法篇
深度学习word2vec笔记之算法篇 声明: 本文转自推酷中的一篇博文http://www.tuicool.com/articles/fmuyamf,若有错误望海涵 前言 在看word2vec的资料 ...
- 强化学习读书笔记 - 02 - 多臂老O虎O机问题
# 强化学习读书笔记 - 02 - 多臂老O虎O机问题 学习笔记: [Reinforcement Learning: An Introduction, Richard S. Sutton and An ...
- 强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)
强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods) 学习笔记: Reinforcement Learning: An Introduction, Richard S ...
- 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)
强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning) 学习笔记: Reinforcement Learning: An Introductio ...
- (转)深度学习word2vec笔记之基础篇
深度学习word2vec笔记之基础篇 声明: 1)该博文是多位博主以及多位文档资料的主人所无私奉献的论文资料整理的.具体引用的资料请看参考文献.具体的版本声明也参考原文献 2)本文仅供学术交流,非商用 ...
- 深度学习word2vec笔记之基础篇
作者为falao_beiliu. 作者:杨超链接:http://www.zhihu.com/question/21661274/answer/19331979来源:知乎著作权归作者所有.商业转载请联系 ...
随机推荐
- js事件循环机制 (Event Loop)
一.JavaScript是单线程单并发语言 什么是单线程 主程序只有一个线程,即同一时间片断内其只能执行单个任务. 为什么选择单线程? JavaScript的主要用途是与用户互动,以及操作DOM.这决 ...
- Sublime编译器快捷键大全
Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...
- 二分三元组 CodeForces - 251A
题目链接: https://vjudge.net/problem/35188/origin 题目大意: 要求你找到一个 i < j < k时有 a[k]-a[i] <= d的组的个数 ...
- Java面试宝典2018
转 Java面试宝典2018 一. Java基础部分…………………………………………………………………………………….. 7 1.一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制 ...
- Linux shell编程语法
由于条件判断和循环跟其他语言都大同小异,学过编程的话很好理解,这里只贴出格式,不具体写用法了.(select菜单会详细讲一下) 条件判断 if条件判断 普通if条件判断: if 判断条件1; then ...
- css3 属性
1.css 面试题: css 组成: css 样式组成 规则:选择器+声明块 声明块:css属性+css属性值 2.css 解析规则: 从右往左 3.文字超出省略号显示: 1.元素不是内联块 2.ov ...
- c语言的二进制表示的是什么码
int -1 的二进制是 1111 1111 1111 1111 1111 1111 1111 1111 int -2 的二进制是 1111 1111 1111 1111 1111 1111 1111 ...
- 使用Dubbo的SPI扩展机制实现自定义LoadBalance——方法二 不改源码添加META-INF/dubbo元数据
一.官网提供的方法 参考官网 http://dubbo.apache.org/zh-cn/docs/dev/impls/load-balance.html 二.方法总结 在工程中创建类并实现LoadB ...
- foreach next 操作数组指针移动问题
2018年10月20日10:39:40 先说结论,foreach 维护的是一套属于自己的数组指针 会在操作数据的时候,分裂一套变量地址,即使你强制使用 & 取地址一样会分裂,不会引用同一套指针 ...
- linux 软链接和硬链接的区别 和 inode 的理解
软连接和硬连接的区别:1.创建的方式不同软:ln -s 源文件 连接名硬:ln 源文件 连接名 2.原理不同,和删除源文件对其的影响.硬连接的inode节点和源文件的inode节点一样.也就是同一个i ...