common-dbutils.jar学习心得

common-dbutils.jar学习心得

common-dbutils.jar

QueryRunner

update方法:

* int update(String sql, Object… params) –>  可执行增、删、改语句





@Test


public void fun1() throws SQLException {


QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());


String sql = “insert into t_stu values(?,?,?,?)”;


Object[] params = {1002, “kevin”, 8, “male”};





qr.update(sql, params);


}

* int update(Connection con, String sql, Object… parmas) 

–> 需要调用者提供Connection,

这说明本方法不再管理Connection了。支持事务!


query方法:


* T query(String sql, ResultSetHandler rsh, Object… params) –> 可执行查询


 > 它会先得到ResultSet,然后调用rsh的handle()把rs转换成需要的类型!





public void fun2() throws SQLException {


// 创建QueryRunner,需要提供数据库连接池对象


QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());


// 给出sql模板


String sql = “select * from t_stu where sid=?”;


// 给出参数


Object[] params = {1001};


// 执行query()方法,需要给出结果集处理器,即ResultSetHandler的实现类对象


// 我们给的是BeanHandler,它实现了ResultSetHandler


// 它需要一个类型,然后它会把rs中的数据封装到指定类型的javabean对象中,然后返回javabean


Stu stu = qr.query(sql, new BeanHandler<Stu>(Stu.class), params);


System.out.println(stu);


}


* T query(Connection con, String sql, ResultSetHadler rsh, Object… params),


 支持事务

ResultSetHandler接口:


* BeanHandler(单行) –> 构造器需要一个Class类型的参数,


用来把一行结果转换成指定类型的javaBean对象 





public void fun2() throws SQLException {


// 创建QueryRunner,需要提供数据库连接池对象


QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());


// 给出sql模板


String sql = “select * from t_stu where sid=?”;


// 给出参数


Object[] params = {1001};


// 执行query()方法,需要给出结果集处理器,即ResultSetHandler的实现类对象


// 我们给的是BeanHandler,它实现了ResultSetHandler


// 它需要一个类型,然后它会把rs中的数据封装到指定类型的javabean对象中,然后返回javabean


Stu stu = qr.query(sql, new BeanHandler<Stu>(Stu.class), params);


System.out.println(stu);


}





* BeanListHandler(多行) –> 构造器也是需要一个Class类型的参数


  ,用来把一行结果集转换成一个javabean,


那么多行就是转换成List对象,一堆javabean





/**


* BeanListHandler的应用,它是多行处理器


* 每行对象一个Stu对象!


* @throws Exception


*/


@Test


public void fun3() throws Exception {


QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());


String sql = “select * from t_stu”;


List<Stu> stuList = qr.query(sql, new BeanListHandler<Stu>(Stu.class));





System.out.println(stuList);


}








* MapHandler(单行) –> 把一行结果集转换Map对象


 > 一行记录:


sid  sname  age  gender


1001 kevin     29   male





 > 一个Map:


{sid:1001, sname:cidy, age:29, gender:male}





/**


* MapHandler的应用,它是单行处理器,把一行转换成一个Map对象


* @throws SQLException 


*/


@Test


public void fun4() throws SQLException  {


QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());


String sql = “select * from t_stu where sid=?”;


Object[] params = {1001};


Map map = qr.query(sql, new MapHandler(), params);





System.out.println(map);


}





* MapListHandler(多行) –> 把一行记录转换成一个Map,


多行就是多个Map,即List<Map>!


/**


* MapListHandler,它是多行处理器,把每行都转换成一个Map,即List<Map>


* @throws SQLException


*/


@Test


public void fun5() throws SQLException  {


QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());


String sql = “select * from t_stu”;


List<Map<String,Object>> mapList = qr.query(sql, new MapListHandler());





System.out.println(mapList);


}



* ScalarHandler(单行单列)


–> 通常用与select count(*) from t_stu语句!


结果集是单行单列的!它返回一个Object,其实……Integer…Long….BigInteger….等起父类都是Number类型





/**


* ScalarHandler,它是单行单列时使用,最为合适!


* @throws SQLException


*/


@Test


public void fun6() throws SQLException {


QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());


String sql = “select count(*) from t_stu”;


/*


* Integer、Long、BigInteger


*/


Number cnt = (Number)qr.query(sql, new ScalarHandler());





long c = cnt.longValue();


System.out.println(c);


}


}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100811.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mybatis返回map集合_java遍历map的key和value

    mybatis返回map集合_java遍历map的key和value匿名用户1级2018-06-10回答一、概述MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面…

    2022年10月5日
    3
  • ACM/ICPC2014鞍山现场赛E hdu5074Hatsune Miku「建议收藏」

    ACM/ICPC2014鞍山现场赛E hdu5074Hatsune Miku

    2022年1月28日
    55
  • 视频中的车牌特征识别[通俗易懂]

    视频中的车牌特征识别[通俗易懂]这里,没有直接采用之前的方案,是因为在设计的时候,发现直接采用颜色等直接特征提取然后进行二值化处理的方法,如果视频中出现颜色类似的区域,则很有可能错误的定位,例如在公交车中车牌区域范围和前窗以及部分的背景比较相似,直接采用这种方法会出错。这里,定位的算法,我们使用的是HOG特征提取和Adaboost的算法进行定位。对应的程序为:具体的原理如下所示:adaboost:http://www.doc88.com/p-211656392…

    2022年5月15日
    51
  • C语言基础知识:函数指针&指针函数(定义格式、作用及用法说明)[通俗易懂]

    C语言基础知识:函数指针&指针函数(定义格式、作用及用法说明)[通俗易懂]版权声明:本文为博主原创文章,未经博主允许不得转载。https://mp.csdn.net/postedit/83150266一、函数指针的实质(还是指针变量)1、函数指针定义格式:类型名 (*函数名)(函数参数列表);int(*pfun)(int,int);2、函数指针的定义、赋值、调用voidfunc1(void)//定义一个函数,以方便下面定义函…

    2022年6月22日
    31
  • 计算机教育中缺失的一课,劝学弟学妹们一句,一定要趁早补上,工作后会事半功倍!「建议收藏」

    计算机教育中缺失的一课,劝学弟学妹们一句,一定要趁早补上,工作后会事半功倍!「建议收藏」各位学弟学妹们好,作为稍微年长的我(岁月是把杀猪刀啊),今天就给大家补补课。在大学里的,我们上的计算机专业课程一般都是像操作系统、编译原理、计算机组成原理、计算机网络这些理论课程,还有一些像C语言、Java、.Net这些可以实践的课程,甚至还有可能让你焊一个收音机,但是对于一些基本习惯却很容易被忽略,需要学弟学妹们自行摸索。实际上,一些好的基本习惯是时时刻刻在影响着我们自己的,不仅是在学校的学习生活中,还是在毕业后的工作生活中。今天我要给大家说就是,使用键盘的习惯。有的同学可能会诧异,键盘谁不会用啊,

    2022年7月16日
    25
  • lspci 安装_ipswme下载的系统如何安装

    lspci 安装_ipswme下载的系统如何安装在原版的busy-box做出来的文件系统中,lspci命令只有两个选项:ynq>lspci-hlspci:invalidoption–‘h’BusyBoxv1.20.1(2012-11-2713:37:12MST)multi-callbinary.Usage:lspci[-mk]ListallPCIdevices-m

    2025年10月17日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号