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);


}


}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 分布式系列——分布系统的一些技术

    这一个系列会总结和整理自己在公司使用的技术和一些比较流行的分布式系统用的技术! 这一个系列的学习会一直持续,让自己成长,让自己走出舒适区!看过这一句话:大部分的害怕是多数是因为懒惰!!!在路上,少年,不卑不亢!

  • 浏览器被hao360劫持解决办法

    浏览器被hao360劫持解决办法浏览器被hao360劫持怎么办chromeedge被hao360劫持解决办法建议chromeedge被hao360劫持chrome和edge被hao360劫持后的样子解决办法在该目录下C:\ProgramData\Microsoft\Windows\StartMenu\Programs删除被hao360修改快捷方式(edge为例chrome我已删除了)最后浏览器回复正常。建议安装软件到对应官网下载正规软件安装…

  • JY02调试-无刷电机驱动芯片[通俗易懂]

    JY02调试-无刷电机驱动芯片[通俗易懂]JY02是国内研制的无刷电机驱动芯片,相比于之前的DRV11873,少了集成的MOSFET,只能通过外部扩展MOSFET驱动芯片和功率管达到功率输出的目的,虽然在电路设计上增加了复杂度,但可以极大的提高电机驱动的输出功率,由于使用了外部的MOSFET,输出功率基本由功率MOSFET的驱动能力决定。JY02是硬件应用,不需要编写驱动固件,内部集成反电动势检测电路,支持’Y’形和三角形电机,支持过流检…

  • Android9.0_P:ClassNotFoundException:Didn’t find class “org.apache.http.ProtocolVersion” on path:

    Android9.0_P:ClassNotFoundException:Didn’t find class “org.apache.http.ProtocolVersion” on path:

  • request中的方法_request有什么方法

    request中的方法_request有什么方法requestgetRealPath的替代方法

  • JSP热部署的实现原理[通俗易懂]

    JSP热部署的实现原理[通俗易懂]一.             概述名词解释:所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。对于Java应用程序来说,热部署就是在运行时更新Java类文件。在基于Java的应用服务器实现热部署的过程中,类装入器扮演着重要的角色。大多数基于Java的应用服务器,包括EJB服务器和Servlet容器,都支持热部署。类装入器不能重新装入一个已经装入的类,但只要使用一个

发表回复

您的电子邮箱地址不会被公开。

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