- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章JavaWeb dbutils执行sql命令并遍历结果集时不能查到内容的原因分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
javaweb dbutils执行sql命令并遍历结果集时不能查到内容的原因及处理方法如下所示:
遍历结果集时只遍历bean对象才会只输出第一行那种内容(第一行是输出了userentity类实例化的对象),所以这里需要 re.getrepotablename() 才能通过对象调用相对应的内容 。
这样一来,就可以取到值了 。
。
ps:javaweb之dbutils详细介绍如下所示:
。
1、什么是dbutils及作用 。
dbutils是apache公司写的。dbutils是java编程中的数据库操作实用工具,小巧简单实用.
dbutils封装了对jdbc的操作,简化了jdbc操作。可以少写代码.
1.对于数据表的读操作,他可以把结果转换成list,array,set等java集合,便于程序员操作; 。
2.对于数据表的写操作,也变得很简单(只需写sql语句) 。
3.可以使用数据源,使用jndi,数据库连接池等技术来优化性能--重用已经构建好的数据库连接对象 。
2、dbutils的三个核心对象 。
2.1、queryrunner类 。
queryrunner中提供对sql语句操作的api.它主要有三个方法:query() 用于执行select,update() 用于执行insert update delete,batch() 批处理。等下下面的会详细的介绍这几种方法的用法.
2.2、resultsethandler接口 。
用于定义select操作后,怎样封装结果集.它总共有9个常用的实现类,下面我会详细的为大家介绍怎么去使用.
2.3、dbutils类 。
它就是一个工具类,定义了关闭资源与事务处理的方法 。
3、怎么去使用dbutils框架 。
3.1、使用步骤 。
导入相对应的jar包 。
创建queryrunner对象 。
使用query方法执行select语句 。
使用resultsethandler封装结果集 。
使用dbutils类释放资源 。
3.2、实例 。
注:本人使用的是c3p0连接池 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import
java.sql.resultset;
import
java.sql.sqlexception;
import
java.util.arraylist;
import
java.util.list;
import
org.apache.commons.dbutils.queryrunner;
import
org.apache.commons.dbutils.resultsethandler;
import
org.apache.commons.dbutils.handlers.beanlisthandler;
import
org.junit.test;
import
com.jxlg.domain.user;
public
class
testselect {
@test
public
void
testselect(){
//创建一个queryrunner对象
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
try
{
// new resultsethandler<list<user>>告诉我们如何封装结果集
list<user> list = qr.query(
"select * from user"
,
new
resultsethandler<list<user>>(){
@override
//query语句执行select语句后,结果一返回值的形式传递过来
public
list<user> handle(resultset rs)
throws
sqlexception {
list<user> list =
new
arraylist<user>();
while
(rs.next()){
user u =
new
user();
u.setid(rs.getint(
1
));
u.setusername(rs.getstring(
2
));
u.setpassword(rs.getstring(
3
));
u.setemail(rs.getstring(
4
));
u.setbirthday(rs.getdate(
5
));
list.add(u);
}
return
list;
}
});
for
(user user : list) {
system.out.println(user);
}
}
catch
(sqlexception e) {
e.printstacktrace();
}
}
@test
public
void
testselect2(){
//创建一个queryrunner对象
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
try
{
//执行sql语句,返回结果
list<user> list = qr.query(
"select * from user where id=? and username=?"
,
new
beanlisthandler<user>(user.
class
),
1
,
"tom"
);
for
(user user : list) {
system.out.println(user);
}
}
catch
(sqlexception e) {
e.printstacktrace();
}
}
}
|
4、dbutils三个核心对象详解 。
4.1、queryrunner对象 。
4.1.1、构造函数 。
new queryrunner(); 它的事务可以手动控制。 。
也就是说此对象调用的方法(如:query、update、batch)参数中要有connection对象.
new queryrunner(datasource ds); 它的事务是自动控制的。一个sql一个事务。 。
此对象调用的方法(如:query、update、batrch)参数中无需connection对象.
4.1.2、常用方法 。
4.2、resultsethandler接口 。
4.2.1、它有9个结果处理器 。
arrayhandler:适合取1条记录。把该条记录的每列值封装到一个数组中object[] arraylisthandler:适合取多条记录。把每条记录的每列值封装到一个数组中object[],把数组封装到一个list中 columnlisthandler:取某一列的数据。封装到list中。 keyedhandler:取多条记录,每一条记录封装到一个map中,再把这个map封装到另外一个map中,key为指定的字段值。 maphandler:适合取1条记录。把当前记录的列名和列值放到一个map中 maplisthandler:适合取多条记录。把每条记录封装到一个map中,再把map封装到list中 scalarhandler:适合取单行单列数据 beanhandler beanlisthandler 。
4.2.2、实例 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
import
static
org.junit.
assert
.*;
import
java.sql.sqlexception;
import
java.util.list;
import
java.util.map;
import
java.util.map.entry;
import
org.apache.commons.dbutils.queryrunner;
import
org.apache.commons.dbutils.handlers.arrayhandler;
import
org.apache.commons.dbutils.handlers.arraylisthandler;
import
org.apache.commons.dbutils.handlers.beanhandler;
import
org.apache.commons.dbutils.handlers.columnlisthandler;
import
org.apache.commons.dbutils.handlers.keyedhandler;
import
org.apache.commons.dbutils.handlers.maphandler;
import
org.apache.commons.dbutils.handlers.maplisthandler;
import
org.apache.commons.dbutils.handlers.scalarhandler;
import
org.junit.test;
import
com.jxlg.domain.user;
public
class
testresultsethandler {
@test
public
void
test1() {
//arrayhandler:适合取1条记录。把该条记录的每列值封装到一个数组中object[]
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
try
{
object[] o = qr.query(
"select * from user where id=?"
,
new
arrayhandler(),
5
);
for
(object object : o) {
system.out.println(object);
}
}
catch
(sqlexception e) {
e.printstacktrace();
}
}
@test
public
void
test2()
throws
sqlexception {
//arraylisthandler:适合取多条记录。把每条记录的每列值封装到一个数组中object[],把数组封装到一个list中
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
list<object[]> list = qr.query(
"select * from user"
,
new
arraylisthandler());
for
(object[] objects : list) {
for
(object object : objects) {
system.out.println(object);
}
system.out.println(
"----------------------"
);
}
}
@test
public
void
test3()
throws
sqlexception {
//columnlisthandler:取某一列的数据。封装到list中
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
list<object> list = qr.query(
"select username,password from user "
,
new
columnlisthandler(
1
));
for
(object object : list) {
system.out.println(object);
}
}
@test
public
void
test4()
throws
sqlexception {
//keyedhandler:取多条记录,每一条记录封装到一个map中,
//再把这个map封装到另外一个map中,key为指定的字段值。
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
//大的map的key是表中的某列数据,小的map的key是表的列名,所以大的map的key用的是object类型,小的是string。
map<object, map<string, object>> map = qr.query(
"select * from user"
,
new
keyedhandler(
1
));
for
(map.entry<object, map<string,object>> m : map.entryset()) {
system.out.println(m);
//就是id至,因为设置了“1”.
for
(map.entry<string, object> mm : m.getvalue().entryset()) {
system.out.println(mm);
//取出小map中的key和value
}
system.out.println(
"--------------------"
);
}
}
@test
public
void
test5()
throws
sqlexception {
//maphandler:适合取1条记录。把当前记录的列名和列值放到一个map中
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
map<string, object> map = qr.query(
"select * from user"
,
new
maphandler());
for
(map.entry<string, object> m : map.entryset()) {
system.out.println(m.getkey()+
"\t"
+m.getvalue());
//默认取第一行数据,需要去其它行用where加条件
}
}
@test
public
void
test6()
throws
sqlexception {
//maplisthandler:适合取多条记录。把每条记录封装到一个map中,再把map封装到list中
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
list<map<string, object>> list = qr.query(
"select * from user"
,
new
maplisthandler());
for
(map<string, object> map : list) {
for
(map.entry<string, object> m : map.entryset()) {
system.out.println(m);
}
system.out.println(
"-----------"
);
}
}
@test
public
void
test7()
throws
sqlexception {
//scalarhandler:适合取单行单列数据
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
object o = qr.query(
"select * from user"
,
new
scalarhandler(
2
));
system.out.println(o);
}
@test
public
void
test8()
throws
sqlexception {
//beanhandler:适合取单行单列数据
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
user user = qr.query(
"select * from user"
,
new
beanhandler<user>(user.
class
));
system.out.println(user);
}
}
|
5、使用dbutils做一个增删改查的例子 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
import
static
org.junit.
assert
.*;
import
java.sql.sqlexception;
import
java.util.date;
import
javax.crypto.spec.oaepparameterspec;
import
org.apache.commons.dbutils.queryrunner;
import
org.junit.test;
public
class
testincurd {
@test
public
void
testinsert() {
//创建一个queryrunner对象
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
try
{
qr.update(
"insert into user (username,password,email,birthday)values(?,?,?,?)"
,
"guapi"
,
"4646"
,
"guapi@163.com"
,
new
date());
}
catch
(sqlexception e) {
e.printstacktrace();
}
}
@test
public
void
testupdate() {
//创建一个queryrunner对象
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
try
{
qr.update(
"update user set username=?,password=? where id=4 "
,
"meizimeizi"
,
"520520"
);
}
catch
(sqlexception e) {
e.printstacktrace();
}
}
@test
public
void
testdelete() {
//创建一个queryrunner对象
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
try
{
qr.update(
"delete from user where id=? "
,
4
);
}
catch
(sqlexception e) {
e.printstacktrace();
}
}
@test
public
void
testbatch() {
//创建一个queryrunner对象
queryrunner qr =
new
queryrunner(c3p0util.getdatasource());
try
{
object[][] params =
new
object[
10
][];
//高维代表执行多少次sql语句
for
(
int
i =
0
;i<params.length;i++){
params[i] =
new
object[]{
"guapi"
+i,
"4646"
,
"guapi@163.com"
,
new
date()};
}
qr.batch(
"insert into user (username,password,email,birthday)values(?,?,?,?)"
, params );
}
catch
(sqlexception e) {
e.printstacktrace();
}
}
}
|
总结 。
以上所述是小编给大家介绍的javaweb dbutils执行sql命令并遍历结果集时不能查到内容的原因分析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我的支持! 。
原文链接:http://www.cnblogs.com/kinome/archive/2017/12/22/8085588.html 。
最后此篇关于JavaWeb dbutils执行sql命令并遍历结果集时不能查到内容的原因分析的文章就讲到这里了,如果你想了解更多关于JavaWeb dbutils执行sql命令并遍历结果集时不能查到内容的原因分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我有一系列 SQL 命令,我想在大约 40 个不同的表上运行。必须有一种方法可以在不编写 40 条不同命令的情况下执行此操作... 我在 SQL Server 中运行它。所有表都有不同的名称,我要操作
我习惯在 PHP 中使用命令“mysql_insert_id()”来返回插入到我的数据库中的最后一行的 id。 在 C# 中的 SQLite 中是否有等效的命令? 谢谢! -阿德娜 最佳答案 选择 l
试图找出一种方法来回填 ds 分区 Hive 表的分区。 我知道如何从 CLI 运行 Hive 命令,例如 $HIVE_HOME/bin/hive -e 'select a.col from tab1
我有 .bat 文件。看起来像下一个 ....many commands1 ftp -i -s:copy.txt ...many commands2 copy.txt 包含下一个命令 open ...
基本上我想输入 show 并检查是否有 show 命令或别名已定义并触发它,如果未定义则触发 git show 。 例如 rm 应该执行 rm 但 checkout 应该执行 git checkout
我公司的主数据库是 iSeries 机器,我已经非常习惯使用 DB2 命令和结构。我现在正在尝试做一个小项目,更新一个包含超过 300 万条记录的表。我想出一种比较和“清理”数据的更快方法是使用 My
我想在带有 Node 的终端中制作一个简单的按钮板,并“blessed”用于连接或运行不同的命令。 ----------------------------------------------- _
我们有一个 selenium IDE 脚本,正在转换为 python webdriver。以下命令未转换: [openWindow | http://mywebsite.com/index.php |
我正在学习这个关于从 GIT HUB 下载和安装 Web 文件的在线教程。我进入主题:启动我们的静态网站,系统提示我输入命令以下载和安装 Web 文件。但是,当我输入命令 yarn install 时
我在 shell 脚本中使用 elif 命令时遇到问题,就像在 fortran 中一样。 我有 100 家公司的员工名单。我想屏蔽那些员工少于 500 人的公司。我的脚本是 rm -f categor
我有一些 Linux 命令可以生成 token 。我在 Linux 机器上使用操作系统库形式的 Python 自动化了这些命令。它工作正常。 但是,当我在 Windows 中尝试相同的代码时,它没有返
本文分享自华为云社区《Git你有可能不知道交互式暂存》,作者:龙哥手记。 本节中的几个交互式 Git 命令可以帮助你将文件的特定部分组合成提交。 当你在修改了大量文件后,希望这些改动能拆分为若干提交而
我想知道如何使用 IN 比较语法来做到这一点。 当前的 SQL 查询是: select * from employee where (employeeName = 'AJAY' and month(e
我在这个位置安装了 Hadoop /usr/local/hadoop$ 现在我想列出 dfs 中的文件。我使用的命令是: hduser@ubuntu:/usr/local/hadoop$ bin/ha
是否有一个单一的 docker 命令可用于清除所有内容?如果正在运行,请停止所有容器、删除所有图像、删除所有卷...等。 最佳答案 我认为没有一个命令可以做到这一点。您首先需要停止所有容器使用 $ d
我基本上是在 clojure/nrepl 模式中寻找与 C-u C-x C-e 或 C-c C-p 等效的 Scheme。 我想要一个 C-x C-e 将输出打印到缓冲区,而不是仅仅在 repl 中。
我可以在 vim 中使用 pudb(一个 ncurses Python 调试器),因为,例如,:!python %在实际的终端窗口中运行。我更喜欢使用 gvim,但 gvim 运行 :!python
我正在尝试编写一个 FFMPEG 命令: 取为 输入 一个视频 input.mp4 和一个图像 pic.jpg 作为 输出 将 input.mp4 拆分为 20 秒的视频,按顺序重命名;对于每个分割视
我想转储视频每帧的比特率。我正在尝试使用 -vstats 获取此信息命令。当我运行此命令时 - ffmpeg -i input.mp4 -vstats 它显示至少应该定义一个文件。 如果有人能建议我任
我是一名优秀的程序员,十分优秀!