Java实战之04JavaWeb-06DBUtils
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java实战之04JavaWeb-06DBUtils,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3893字,纯文字阅读大概需要6分钟。
内容图文
![Java实战之04JavaWeb-06DBUtils](/upload/InfoBanner/zyjiaocheng/1163/bdf14eb37f40443fb072e5c17f44831f.jpg)
一、DBUtils
1.DBUtils的简介
Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。
2.DBUtils中的API的概要介绍
QueryRunner类:sql操作的核心类 这个对象内部封装着操作数据的方法
ResultSetHandler接口:代表结果集到实体的映射封装的功能
为什么是接口:具体封装的规则不知道 要根据实体业务进行自行操作
DButils类:主要是关于数据库的关闭 事务的提交相关的方法
3.QueryRunner的API详解
注意:在使用DBUtils之前 导入的jar包
1)数据库驱动
2)连接池的jar
3)DBUtils的jar
(1)怎样创建QueryRunner
有两种方式可以创建QueryRunner
第一种无参:new QueryRunner();
一般情况下 结合事务操作一起使用
第二种有参:new QueryRunner(DataSource);
一般情况下 不需要事务控制的时候使用
注意:程序中操作sql时 必须得有Connection对象,有数据源参数的构造方法会自动从数据源中获得一个Connection对象操作数据库。无参的构造方法在创建QueryRunner时没有提供Connection的对象信息,在指定操作sql的方法时也得传入Connection。
QueryRunner中的方法
batch
update
query
(2)更新数据的操作(单条sql执行)
update操作:
update方法有三个参数 是通过这三个参数的组合 形成多个方法
Connection:数据库的连接对象 与无参的new QueryRunner()一起使用
sql:要执行sql语句 是必须有的
params:代笔占位符的实际的参数
通过上述参数可以组成哪些方法
update(Connection,sql,params);
update(Connection,sql);
update(sql,params);
update(sql);
1 @Test 2 public void test1() throws SQLException{ 3//需求:修改products表中的id=100的商品的category为 生活 4//1、创建QueryRunner 5 QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource()); 6//2、执行sql 7 String sql = "update products set category=? where id=?"; 8int update = runner.update(sql, "生活","100"); 9 System.out.println(update); 10 }
(3)更新数据的操(批量sql执行)
batch操作---同时执行sql结构相同的多条语句
参数:
Connection:数据库的连接对象 与无参的new QueryRunner()一起使用
sql:要执行sql语句 是必须有的
params:二维数组
一维代表是指定的sql
二维代表sql中的占位符的实际参数
例如:
sql:insert into products values(?,?,?);
param:
{
{500,ios入门,15},
{600,C#入门,28},
{700,ruby入门,45},
{800,hadoop入门,99}
}
insert语句执行几次:4次 每一次执行3个参数
需求:向products表中批量插入2条数据
1 // 1、创建QueryRunner对象 2 QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource()); 3//2、执行sql 4 String sql = "insert into products values(?,?,?,?,?,?,?)"; 5//Object[][] params = new Object[2][7]; 6//params[0][0]="500"; 7 Object[][] params = { 8 {"500","ruby入门",89,"感性",800,"bookcover/105.jpg","好书啊好书"}, 9 {"600","hadoop入门",89,"感性",800,"bookcover/106.jpg","好书啊好书"} 10 }; 11int[] batch = runner.batch(sql, params); 12//{1,1}13for(int i:batch){ 14 System.out.println(i); 15 }
(4)查询的操作query
query方法执行select语句
参数:
Connection:数据库的连接对象 与无参的new QueryRunner()一起使用
sql:要执行sql语句 是必须有的
params:代笔占位符的实际的参数
ResultSetHandelr:结果集封装的功能
1 @Test 2 public void test1() throws SQLException{ 3//1、创建QueryRunner 4 QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource()); 5//2、执行sql语句 6 String sql = "select * from products"; 7 List<Product> query = runner.query(sql, new ResultSetHandler<List<Product>>() { 8 @Override 9public List<Product> handle(ResultSet rs) throws SQLException { 10//写自己的封装的逻辑11 List<Product> list = new ArrayList<Product>(); 12while(rs.next()){ 13 Product pro = new Product(); 14 pro.setId(rs.getString("id")); 15 pro.setName(rs.getString("name")); 16 pro.setCategory(rs.getString("category")); 17 pro.setDescription(rs.getString("description")); 18 pro.setImgurl(rs.getString("imgurl")); 19 pro.setPnum(rs.getInt("pnum")); 20 pro.setPrice(rs.getDouble("price")); 21 list.add(pro); 22 } 23return list; 24 } 2526 }); 2728 System.out.println(query); 29 }
二、ResultSetHandler接口的实现类
BeanListHandler:返回是List<T>
BeanHandler:返回的是T
MapListHandler:返回是List<Map<String,Object>>
MapHandler:返回是Map<String,Object>
ScalarHandler:返回的是一个object获得的是一个值 是查出的虚拟表的左上角的 值,常用在聚合函数查询中
---------------------------------------------------------------
ArrayListHandler:List<Object[]>
ArrayHandler:Object[]
ColumnListHandler:List<Object> 查询的是结构的某一列的数据集合
KeyedHandler:返回值Map<Object,Map<String,Object>>
{
200={id=200, category=生活, price=78.0, pnum=120, description=好书一本, name=android入门经典, imgurl=bookcover/102.jpg},
100={id=100, category=生活, price=88.0, pnum=100, description=好书一本, name=java入门经典, imgurl=bookcover/101.jpg}
}
DbUtils工具类:工具类,包括事务的提交,回滚和资源的关闭的工具方法,使用不多
原文:http://www.cnblogs.com/minihouseCoder/p/5629473.html
内容总结
以上是互联网集市为您收集整理的Java实战之04JavaWeb-06DBUtils全部内容,希望文章能够帮你解决Java实战之04JavaWeb-06DBUtils所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。