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


相关推荐

  • 阿里云配置二级域名

    阿里云配置二级域名阿里云配置二级域名打开https://www.aliyun.com/?utm_content=se_1000301881打开控制台找到域名列表—解析—添加记录记录类型A-主机记录:yy.xxx.cn//—-yy二级域名xxx一级域名解析线路:默认记录值:39.xx….

    2022年5月21日
    44
  • 一个暑假额。。有一点进步。。要学的还有很多

    一个暑假都在安卓上了,本来眼高手低的觉得能学个差不多,没想到只学了个皮毛而已。到现在基本上了解了安卓的工作原理和一些常用api的调用,不过遇到瓶颈了,终于知道很多人劝的那句话,java基础很重要。现在体会到了,刚开始还能根据c++的理解大体写出小程序的细节,但是到后来,随着程序的增加,却是意识到需要系统的学习一下java,所以,前几天开始看李刚老师的疯狂java讲义,刚才因为出现了问题,一打开

    2022年3月8日
    43
  • 关于颜色的十六进制对照表图片_84的十六进制

    关于颜色的十六进制对照表图片_84的十六进制关于颜色的十六进制对照表便于查找ctrl+F调色板文字查找颜色英文代码形象描述十六进制RGBLightPink浅粉红#FFB6C1255,182,193Pink粉红#

    2022年8月6日
    4
  • python和c++哪个好_python地名识别

    python和c++哪个好_python地名识别Ctrl+N按文件名搜索py文件ctrl+n可以搜索py文件勾选上面这个框可以搜索工程以外的文件Ctrl+shift+N按文件名搜索所有类型的文件Ctrl+shift+N可以搜索py文件,也可以搜索其它类型的文件。除了搜索不同类型的文件,Ctrl+shift+N还有一个强大之处是可以搜索路径,只需要在你搜索的词前面或后面加上/ctrl+shift+f全局字符串搜索这种搜索的名字叫做”fin…

    2022年8月28日
    1
  • 推荐15个月 Node.js 开发工具

    推荐15个月 Node.js 开发工具

    2022年1月17日
    42
  • clickhouse支持sql_clickhouse库的使用

    clickhouse支持sql_clickhouse库的使用CREATETABLEzhida.SRC_ZD_HQLM_SUM(“ID”Nullable(VARCHAR2(255)),”SHOWID”VARCHAR2(255),”YEAR”VARCHAR2(255),”ZHIDA_PEOPLE_NUM”Int32,”ZHIDA_PEOPLE_MONEY”Nullable(Decimal(38,2)),”ZHIDA_ENT_NUM”Int32,”ZHIDA_ENT_MONEY”Decimal(38,2))ENG

    2022年10月17日
    0

发表回复

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

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