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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows phone模拟器安卓版_安卓模拟器win7

    windows phone模拟器安卓版_安卓模拟器win7XNAGameStudio 游戏循环在这部分中您将重点两剩余部分的游戏 — — 重写Update 和 Draw 功能。有些大大可能看过相关微软的训练包,我这里主要是帮一些初学者。希望各位大大包含,毕竟文章发出来还是有工作量的。大家觉得有用就好,要是没有耽误时间给大家道个歉。(感谢http://winphone.us/)1.       打开 BackgroundScreen.c

    2022年8月30日
    4
  • 线程池详解(通俗易懂超级好)「建议收藏」

    线程池详解(通俗易懂超级好)「建议收藏」目标【理解】线程池基本概念【理解】线程池工作原理【掌握】自定义线程池【应用】java内置线程池【应用】使用java内置线程池完成综合案例线程池线程池基础线程池使用线程池综合案例4.学员练习5.线程池总结概念介绍1:什么是线程池2:为什么使用线程池3:线程池有哪些优势什么是池什么是线程池线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runna.

    2025年8月3日
    4
  • MySQL设计之三范式的理解

    MySQL设计之三范式的理解

    2021年11月7日
    46
  • activiti 任务节点 处理人设置

    activiti 任务节点 处理人设置1.1.1.前言我们在使用activiti工作流引擎的时候,最常用的肯定是任务节点,因为在OA系统、审批系统、办公自动化系统中核心的处理就是流程的运转,流程的运转依赖于人员如何设置,人员的设置是非常重要的一个环节,所以说如果能让activiti工作流引擎运转的核心,就必须要支持强大的人员组织架构设计。下面我们先说一下activiti工作流引擎自身支持的可以直接使用的地方。我…

    2022年6月23日
    71
  • c语言pdb文件,VISUAL c+中的pdb文件及其作用「建议收藏」

    c语言pdb文件,VISUAL c+中的pdb文件及其作用「建议收藏」VISUALc+中的pdb文件及其作用程序数据库(PDB)文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。当以/ZI或/Zi(用于C/C++)生成时,将创建一个PDB文件。在VisualC++中,/Fd选项用于命名由编译器创建的PDB文件。当使用向导在VisualStudio中创建项目时,/Fd选项被设置为创建一个名为projec…

    2022年6月2日
    32
  • 友善串口助手使用教程_友善串口调试助手怎么进行配置-友善串口调试助手使用教程…

    友善串口助手使用教程_友善串口调试助手怎么进行配置-友善串口调试助手使用教程…软件功能:友善串口调试助手(win7串口调试工具)是一个很好而小巧的串口调试助手,友善串口调试助手官方版支持二进制面板和TLS、支持终端窗口和远程访问,能够与串口进行通信,访问、修改串行端口,还能够自动识别、自动搜索串口。友善串口调试助手还可以用ASCII码或十六进制接收或发送任何数据或字符,也可以让用户任意设定自动发送周期,还能够把结束数据保存成文本文件,用户也可以通过友善串口调试助手发送任意大…

    2022年6月14日
    103

发表回复

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

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