javaweb dbutils执行sql命令并遍历结果集时不能查到内容的原因及处理方法如下所示:
遍历结果集时只遍历bean对象才会只输出第一行那种内容(第一行是输出了userentity类实例化的对象),所以这里需要 re.getrepotablename() 才能通过对象调用相对应的内容
这样一来,就可以取到值了
ps:javaweb之dbutils详细介绍如下所示:
一、什么是dbutils及作用
dbutils是apache公司写的。dbutils是java编程中的数据库操作实用工具,小巧简单实用。
dbutils封装了对jdbc的操作,简化了jdbc操作。可以少写代码。
1.对于数据表的读操作,他可以把结果转换成list,array,set等java集合,便于程序员操作;
2.对于数据表的写操作,也变得很简单(只需写sql语句)
3.可以使用数据源,使用jndi,数据库连接池等技术来优化性能–重用已经构建好的数据库连接对象
二、dbutils的三个核心对象
2.1、queryrunner类
queryrunner中提供对sql语句操作的api.它主要有三个方法:query() 用于执行select,update() 用于执行insert update delete,batch() 批处理。等下下面的会详细的介绍这几种方法的用法。
2.2、resultsethandler接口
用于定义select操作后,怎样封装结果集.它总共有9个常用的实现类,下面我会详细的为大家介绍怎么去使用。
2.3、dbutils类
它就是一个工具类,定义了关闭资源与事务处理的方法
三、怎么去使用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
						 | importjava.sql.resultset;importjava.sql.sqlexception;importjava.util.arraylist;importjava.util.list;importorg.apache.commons.dbutils.queryrunner;importorg.apache.commons.dbutils.resultsethandler;importorg.apache.commons.dbutils.handlers.beanlisthandler;importorg.junit.test;importcom.jxlg.domain.user;publicclasstestselect {@testpublicvoidtestselect(){//创建一个queryrunner对象queryrunner qr = newqueryrunner(c3p0util.getdatasource());try{// new resultsethandler<list<user>>告诉我们如何封装结果集list<user> list = qr.query("select * from user", newresultsethandler<list<user>>(){@override//query语句执行select语句后,结果一返回值的形式传递过来publiclist<user> handle(resultset rs) throwssqlexception {list<user> list = newarraylist<user>();while(rs.next()){user u = newuser();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);}returnlist;}});for(user user : list) {system.out.println(user);}} catch(sqlexception e) {e.printstacktrace();}}@testpublicvoidtestselect2(){//创建一个queryrunner对象queryrunner qr = newqueryrunner(c3p0util.getdatasource());try{//执行sql语句,返回结果list<user> list = qr.query("select * from user where id=? and username=?", newbeanlisthandler<user>(user.class),1,"tom");for(user user : list) {system.out.println(user);}} catch(sqlexception e) {e.printstacktrace();}}} | 
四、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
						 | importstaticorg.junit.assert.*;importjava.sql.sqlexception;importjava.util.list;importjava.util.map;importjava.util.map.entry;importorg.apache.commons.dbutils.queryrunner;importorg.apache.commons.dbutils.handlers.arrayhandler;importorg.apache.commons.dbutils.handlers.arraylisthandler;importorg.apache.commons.dbutils.handlers.beanhandler;importorg.apache.commons.dbutils.handlers.columnlisthandler;importorg.apache.commons.dbutils.handlers.keyedhandler;importorg.apache.commons.dbutils.handlers.maphandler;importorg.apache.commons.dbutils.handlers.maplisthandler;importorg.apache.commons.dbutils.handlers.scalarhandler;importorg.junit.test;importcom.jxlg.domain.user;publicclasstestresultsethandler {@testpublicvoidtest1() {//arrayhandler:适合取1条记录。把该条记录的每列值封装到一个数组中object[]queryrunner qr = newqueryrunner(c3p0util.getdatasource());try{object[] o = qr.query("select * from user where id=?", newarrayhandler(),5);for(object object : o) {system.out.println(object);}} catch(sqlexception e) {e.printstacktrace();}}@testpublicvoidtest2() throwssqlexception {//arraylisthandler:适合取多条记录。把每条记录的每列值封装到一个数组中object[],把数组封装到一个list中queryrunner qr = newqueryrunner(c3p0util.getdatasource());list<object[]> list = qr.query("select * from user", newarraylisthandler());for(object[] objects : list) {for(object object : objects) {system.out.println(object);}system.out.println("----------------------");}}@testpublicvoidtest3() throwssqlexception {//columnlisthandler:取某一列的数据。封装到list中queryrunner qr = newqueryrunner(c3p0util.getdatasource());list<object> list = qr.query("select username,password from user ", newcolumnlisthandler(1));for(object object : list) {system.out.println(object);} }@testpublicvoidtest4() throwssqlexception {//keyedhandler:取多条记录,每一条记录封装到一个map中,//再把这个map封装到另外一个map中,key为指定的字段值。queryrunner qr = newqueryrunner(c3p0util.getdatasource());//大的map的key是表中的某列数据,小的map的key是表的列名,所以大的map的key用的是object类型,小的是string。map<object, map<string, object>> map = qr.query("select * from user", newkeyedhandler(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("--------------------");}}@testpublicvoidtest5() throwssqlexception {//maphandler:适合取1条记录。把当前记录的列名和列值放到一个map中queryrunner qr = newqueryrunner(c3p0util.getdatasource());map<string, object> map = qr.query("select * from user", newmaphandler());for(map.entry<string, object> m : map.entryset()) {system.out.println(m.getkey()+"\\t"+m.getvalue());//默认取第一行数据,需要去其它行用where加条件}}@testpublicvoidtest6() throwssqlexception {//maplisthandler:适合取多条记录。把每条记录封装到一个map中,再把map封装到list中queryrunner qr = newqueryrunner(c3p0util.getdatasource());list<map<string, object>> list = qr.query("select * from user", newmaplisthandler());for(map<string, object> map : list) {for(map.entry<string, object> m : map.entryset()) {system.out.println(m); }system.out.println("-----------");}}@testpublicvoidtest7() throwssqlexception {//scalarhandler:适合取单行单列数据queryrunner qr = newqueryrunner(c3p0util.getdatasource());object o = qr.query("select * from user", newscalarhandler(2));system.out.println(o);} @testpublicvoidtest8() throwssqlexception {//beanhandler:适合取单行单列数据queryrunner qr = newqueryrunner(c3p0util.getdatasource());user user = qr.query("select * from user", newbeanhandler<user>(user.class));system.out.println(user);} } | 
五、使用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
						 | importstaticorg.junit.assert.*;importjava.sql.sqlexception;importjava.util.date;importjavax.crypto.spec.oaepparameterspec;importorg.apache.commons.dbutils.queryrunner;importorg.junit.test;publicclasstestincurd {@testpublicvoidtestinsert() {//创建一个queryrunner对象queryrunner qr = newqueryrunner(c3p0util.getdatasource());try{qr.update("insert into user (username,password,email,birthday)values(?,?,?,?)", "guapi","4646","guapi@163.com",newdate());} catch(sqlexception e) {e.printstacktrace();}}@testpublicvoidtestupdate() {//创建一个queryrunner对象queryrunner qr = newqueryrunner(c3p0util.getdatasource());try{qr.update("update user set username=?,password=? where id=4 ", "meizimeizi","520520");} catch(sqlexception e) {e.printstacktrace();}}@testpublicvoidtestdelete() {//创建一个queryrunner对象queryrunner qr = newqueryrunner(c3p0util.getdatasource());try{qr.update("delete from user where id=? ",4);} catch(sqlexception e) {e.printstacktrace();}}@testpublicvoidtestbatch() {//创建一个queryrunner对象queryrunner qr = newqueryrunner(c3p0util.getdatasource());try{object[][] params = newobject[10][]; //高维代表执行多少次sql语句for(inti =0;i<params.length;i++){params[i] =newobject[]{"guapi"+i,"4646","guapi@163.com",newdate()}; }qr.batch("insert into user (username,password,email,birthday)values(?,?,?,?)", params );} catch(sqlexception e) {e.printstacktrace();}}} | 
总结
以上所述是小编给大家介绍的javaweb dbutils执行sql命令并遍历结果集时不能查到内容的原因分析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对快网idc的支持!
原文链接:http://www.cnblogs.com/kinome/archive/2017/12/22/8085588.html
相关文章
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
- 
            2025-05-25 22
- 
            2025-06-04 30
- 
            2025-05-27 37
- 
            2025-05-29 61
- 
            2025-06-04 69
 
        







 
    		 
            	 
															 
         
        
 
                        