DBUtils的使用
DButils是apache旗下Commons项目中的一个JDBC工具包,它可以为帮助我们简化对JDBC的操作,但它并不是一个ORM框架,只是可以为我们执行sql,并将返回的ResultSet转化成我们想要的对象。
import com.kastiny.orm.domain.User;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import java.io.File;
import java.io.FileFilter;
import java.sql.*;
import java.util.List;
import java.util.Map; public class App { QueryRunner qr = null;
Connection conn = null; @Before
public void before() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/chatroom", "root", "");
qr = new QueryRunner();
} /**
* 获取数据库表中name列的值,并以List返回
* @throws Exception
*/
@Test
public void testGetColumnList() throws Exception {
List<String> ls = (List<String>) qr.query(conn, "select * from user", new ColumnListHandler("name"));
System.out.println(ls);
} /**
* 获取返回记录的的给定字段值,如果没有给定字段则返回第一个字段的值
* 如果返回多条记录,择取第一条记录rs.next();
* @throws Exception
*/
@Test
public void testGetField() throws Exception {
String name = (String) qr.query(conn, "select * from user", new ScalarHandler("name"));
System.out.println(name);
} /**
* 将返回的记录以Map形式返回,【返回的map中key的值会根据执行的sql来定,如果某字段有别名则取用别名,如果没有则使用表的字段名,全部使用小写】
* 如果返回结果包含多条记录,则取其第一条:rs.next();
* return : {id=1, name=aa, pass=aa, addr=安徽, info=hehe, type=0}
* @throws Exception
*/
@Test
public void testSelectMap() throws Exception {
// Map map = qr.query(conn, "select * from user where id=1", new MapHandler());
Map map = qr.query(conn, "select * from user", new MapHandler());
System.out.println(map);
} /**
* 将每条记录转成Map并存放于List
* 结果形式:[{key1:value1,key2:value2},{key1:value1,key2:value2}],
* @throws Exception
*/
@Test
public void testSelectMapList() throws Exception {
List<Map<String, Object>> maps = qr.query(conn, "select * from user", new MapListHandler());
for(Map<String, Object> map : maps) {
System.out.println(map);
}
} /**
* 将返回记录转成指定的对象
* 如果返回结果包含多个记录,则取其第一条:rs.next();
* @throws Exception
*/
@Test
public void testSelectBean() throws Exception {
User user = qr.query(conn, "select * from user where id=1", new BeanHandler<User>(User.class));
System.out.println(user);
} /**
* 将每条记录转成指定的对象并存放于List中
* @throws Exception
*/
@Test
public void testSelectBeanList() throws Exception {
List<User> users = qr.query(conn, "select * from user", new BeanListHandler<User>(User.class));
for(User user : users) {
System.out.println(user);
}
} }
DBUtils对于insert、update操作并没有很好的封装,需要根据sql指定所需的每个值(例:qr.update(conn, "UPDATE user SET NAME = ?, age = ?, address = ? WHERE id = ?", "xxx", 23, "ttt", 5); ),而不可以直接通过Bean进行insert操作。
DBUtils的使用的更多相关文章
- dbutils基本使用
dbutils的查询,主要用到的是query方法,增加,修改和删除都是update方法,update方法就不讲了 只要创建ResultSetHandler接口不同的实现类对象就可以得到想要的查询结果, ...
- BenUtils组件和DbUtils组件
BenUtils组件和DbUtils组件 [TOC] 1.BenUtils组件 1.1.简介 程序中对javabean的操作很频繁,所有Apache提供了一套开源api,方便javabean的操作!即 ...
- 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】
一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...
- <十六>JDBC_使用 DBUtils 编写通用的DAO
接口 : DAO<T>.java import java.sql.Connection;import java.sql.SQLException;import java.util.List ...
- <十五>JDBC_使用 DBUtils 进行更新、查询操作
详解待续... DBUtilsTest.java import java.sql.Connection;import java.sql.Date;import java.sql.ResultSet;i ...
- DBUtils 笔记
一.DBUtils介绍 apache 什么是dbutils,它的作用 DBUtils是java编程中的数据库操作实用工具,小巧简单实用. DBUtils封装了对JDBC的操作,简化了JDBC操作.可 ...
- python DBUtils.PooledDB 中 maxcached 和 maxconnections
PooledDB 有这么几个参数 mincached : the initial number of idle connections in the pool (the default of 0 me ...
- 【Java EE 学习 17 上】【dbutils和回调函数】
一.dbutils的核心就是回调函数,可以说如果没有回调函数的思想,dbutils是不可能被开发出来的. 对于dbutils中的QuryRunner类,向该类的query方法提供不同的参数,可以得到不 ...
- 【Java EE 学习 16 下】【dbutils的使用方法】
一.为什么要使用dbutils 使用dbutils可以极大程度的简化代码书写,使得开发进度更快,效率更高 二.dbutils下载地址 http://commons.apache.org/proper/ ...
- DBUtils
DBUtils中核心对象 > QueryRunner类 它提供了操作数据增删改查的方法 query() 执行select语句的 update() 执行insert update delete 语 ...
随机推荐
- C++中的class (2)
class Father { protected void methodA(){ //do something } private void methodB(){//do something } } ...
- 单元测试React
React单元测试——十八般兵器齐上阵,环境构建篇 一个完整.优秀的项目往往离不开单元测试的环节,就 github 上的主流前端项目而言,基本都有相应的单元测试模块. 就 React 的项目来说,一套 ...
- 与阿根廷一起学习Java Web四个发展:对于信息传输和信息传输
发送短信和通用身份验证和用户注册系统消息提示功能模块,但是实现代码过于复杂.使用JSPGen后,深深发送消息.SMS程序包使复杂的简单非常活跃. 在短信模块:支持两种模式,它们被发送到第三方.地方平台 ...
- matlab学习------------普通dialog对话框,错误对话框errordlg,警告对话框warndlg
Dialog对话框 语法: h = dialog('PropertyName',PropertyValue,...) 对话框的默认属性 WindowStyle的值: {normal} | moda ...
- 使用live delegate on解决js后装html故障问题
今天写一个前端的东西.每学到更多的知识.几下就能写几行代码.代码行数十个.代码几个文件量--这是真的.一直以来研究的前端遇到的问题仍然在实践百度谷歌问答. 我今天遇到这样的问题:已经写js代码,正确a ...
- 蓝牙4.0BLE cc2540 cc2541 ios OAD课程(空中固件升级)[原版的,多图]
蓝牙4.0BLE cc2540 cc2541 ios OAD课程(件) 为阿莫单片机论坛 www.AmoMcu.com 原创.仅仅公布于csdn博客, 如需转载,请注明出处,谢谢! ...
- 基于GeoHash算法的附近点搜索实现(一)
1. 引入 最近在参加学校的计算机仿真大赛,时间好像有点不够,所以只完成了前面的一部分最基础的功能,中途还是选择了放弃.但是之前的部分的确觉得完成得还不错,在这里分享一下.题目是要完成一个宇宙飞船加油 ...
- HTTP 长连接 使用场景
offer 80 非常多应用譬如监控.即时通信.即时报价系统都须要将后台发生的变化实时传送到client而无须client不停地刷新.发送请求. 在 多好科技的那位技术指导问我这个是由于他们做物连网, ...
- Linux内核分析(五)----字符设备驱动实现
原文:Linux内核分析(五)----字符设备驱动实现 Linux内核分析(五) 昨天我们对linux内核的子系统进行简单的认识,今天我们正式进入驱动的开发,我们今后的学习为了避免大家没有硬件的缺陷, ...
- 【 D3.js 进阶系列 — 2.1 】 力学图的事件 + 顶点的固定
本章讨论在力学图中经常使用到的事件( Event ),然后对[p=555">进阶 - 第 2.0 章]的人物关系图进行改进.使用户可以固定拖拽的对象. 在[入门 - 第 9.2 章]和 ...