day14--dbutils的使用,事务处理,多表操作,oracle大数据处理

上传人:公**** 文档编号:488388655 上传时间:2023-01-21 格式:DOC 页数:18 大小:191.50KB
返回 下载 相关 举报
day14--dbutils的使用,事务处理,多表操作,oracle大数据处理_第1页
第1页 / 共18页
day14--dbutils的使用,事务处理,多表操作,oracle大数据处理_第2页
第2页 / 共18页
day14--dbutils的使用,事务处理,多表操作,oracle大数据处理_第3页
第3页 / 共18页
day14--dbutils的使用,事务处理,多表操作,oracle大数据处理_第4页
第4页 / 共18页
day14--dbutils的使用,事务处理,多表操作,oracle大数据处理_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《day14--dbutils的使用,事务处理,多表操作,oracle大数据处理》由会员分享,可在线阅读,更多相关《day14--dbutils的使用,事务处理,多表操作,oracle大数据处理(18页珍藏版)》请在金锄头文库上搜索。

1、dbutils的使用,事务处理,多表操作,oracle大数据处理作者:吕鹏时间:2011-08-08首先还是简单的回顾一下昨夭我们讲的什么,我们昨天讲了数据库连接池,为防止频繁访问 数据库而建芷的连接池的实现有两种一个是自定义连接池,使用动态代理方式,另外一个是 使用DBCRC3P0,Tomcat等服务器口帯的,都可以实现连接池 I、午讲了动编写口(2的 JDBC框架,简化了 CRUD操作,为我们今天讲这个DBUtils打下一个基础。目录:一、DBUtils框架的使用1、使用dbutils做增删改查,批处理以及人文本操作2、使用DBUtils框架管理事务。(模拟银行转账)二、使用JDBC操作多

2、个表1、一对多(部门与员工)2、多对多(学生和老师 学生与课程)3、一对一(人和身份证)三、关于Oracle数据对于二进制数据的存取(面试題)一、DBUltk框架的使用jj apidocs2011/8/8 16:29文件夹common dbutils-1.22011/8/8 16:29文件交t I commons-dbutils-1.2.jar2009/3/15 12:04Executable Jar FilecommonsdbirtilsljaYadoc,jar2009/3/15 12:05Executable Jar Filecommons-dbutils-1.2-sources jar2

3、009/3/15 12:05Executable Jar Fileg LICENSE.txt2009/3/15 12:04.NOTICE.txt2009/3/15 12:04文4,RELEASE-NOTES.txt2Q09/3/15 12:04文本文旨1、使用dbutils做增删改査,批处理以及大文本操作package cn itcast dbutils. demo;import java.io.File;import j ava .10 FilelnputStream;import java.io.FileReader;impert java.util.List;import javax s

4、ql rowset senal SenalBlob;import javax sql.rowset.senal.SenalClob;import org apache coninions.dbutils QueiyRumier;import org apache commons.dbutils handlers BeanHandler;import mons.dbutils handlers.BeaiiListHaiidler; Import org.jumt.BefbreClass;import orgjumt.Test;import cn. itcast. dbutil. JDBCU ti

5、ls;/*使用dbutils做增删改杳批处理大文本操作* (author 吕鹏* public class DemoO 1 /创建demo表+| Field | Type| Null | Key | Default | Extra | 4*|id | mt(ll) I YES I I NULL |I name | varchar(lO) | YES | NULL |+/static QuetyRuiiner runner.BefbreClasspublic static void befbreClass()获取一个QueryRiumer对象(构造方法带数据源 口动完成连接创建和释放) rufi

6、ner= new QueiyRumier(JDBCUtilszZ?/f752/r();/*执行插入操作/Testpublic void testlnsert()throws Exception!Strmg sql = insert into demo values(?,?)H; J!, IsqlObject params = 2畀insert”;/初始化参数/7/7/:update(sql, params);/查询对象操作 throws Exception/Testpublic void testObjectQueryO throws ExceptionStrmg sql = ”select

7、from demo where id = ?M;Demo demo = (Demo)厂科甲谢予(sg 1、newBeanHandler(DemoSystem /z/.pniitlii(MID:,t+demo.getId()+H Name:H+demo.getName();*执行删除操作 throws Exception/Testpublic void testDelete() throws Exception Stiing sql = Hdelete from demo where id = ?H;刃 update(sql, 1);/*执行更新操作 throws Exception/Testp

8、ublic void testUpdate() throws Exception Strmg sql = update demo set name=? where id=;Object params =update”,】;刃:update(sqL params);*査询列表操作 throws Exception/Testpublic void testListQueiyO throws Exception String sql = Mselect from demo”;List list =(List vDemo)q . query (sq LnewBeanListHandler(Demo c

9、lass):for(int i=O;ilist. size();i+) System.d?/.pnntln(HID:H+list.get(i).getIdO+H 姓名是:H+list.get(i).getName();/*批处理操作 throws Exception/Testpublic void testBatch() throws Exception Strmg sql = insert mto demo value (?,?);Object paiains = new Object10; for(int i=0;i10;i+)paramsfi = new Objectbatch”;Z7/

10、w/7:batch(sql, paiains);/*人文本操作 throws Exception/Testpublic void testClobO throws ExceptionStrmg sql = insert mto clob values(?)H;File file = new File(Hc:/a txtH);Long 1 = file.lengthO;char buffer = new charl.int alue();FileReader reader = new FileReader(file); reader read(buffer);SenalClob clob = n

11、ew SenalClob(buffer);刃:update(sql, clob);/*二进制图像操作 throws Exception/Testpublic void testBlobO throws Exception String sql = insert into blob values(?)H;File file = new File(Mc:/ajpgH);Long 1 = file.lengtliO;byte buffer = new bytel int alueO;Fileinputstream input = new hilelnputstream(file); input, r

12、ead(buffer);Sena IB lob blob = new SenalBlob(buffer); update(sql,blob);以上代码是使用DButils框架完成的增删改差批处理以及大文本操作,其中,使用了 QueryRiumer这个类,这个类是专门负责处理sql语句的,有四个构造方法,我们经常使用 到的是一个无参的构造方法和一个有参的,参数就是数据源,当我们给其提供数据源的时候 就是让框架为我们口动的创建数据库连接,并释放连接,当这是处理一般操作的时候,当我 们要进行事务处理的时候,那么连接的释放就要由我们口己來决定了,所以我们就不再使用 带参数的QueryRuimer构造方

13、法了。具体用法下面详解。2、使用DBUtils框架管理事务。刚才我们的增删改差是为了演示我们的例子,所以我们忽略了异常也没有使用事务,现在我 们使用爭务模拟一个银行转账,看一下DBUtils框架是如何帮助我们完成爭务管理的。在讲解事务之前,需要让大家理解一件爭情就是,我们使用弔务就不能使用其QueryRimner 的有参构造方法I大1为我们要自己定义爭务的开关,如果使用带参数的构造就要让框架帮 助我们关闭数据库连接了,所以这里首先人家要明白.那么我们如何将我们的连接传递给持 久层呢,有同学说使用构造方法,是挺好的,通过构造方法将我们的conn传递给持久层, 但是为了降低耦合度,我们不想在业务层

14、出现持久层的代码,那我们就使用一个类帮助我们 把这个连接传递过去,就相当于使用匸厂帮我们生成持久层对彖一样,那我们使用什么类呢, 我们使用ThreadLoacl这个类关于TlireadLocal这个类,可以查阅帮助文档了解,在这里我简单的说明一下它的作用, 它的作用是在一个线程当中记录我们的变龟,这个变鼠可以是任意变晟,包括我们的连接, 就是说我们生成一个连接以后可以放在这个线程中,这样,只要是这个线程中任何对象都町 以共享这个连接,当这个线程结束以后,线程要删除这个连接。具体使用方法:声明线程共享变量public static TlireadLocal container = new TlireadLocal();获取共享变量public static ThreadLocal getContainerOreturn cont(iuiet这样,那么我们就可以帮有关审务的操作,这些操作原本应该在业务层出现的代码,现 在我们都把它放在工具类中,因为不管是事务开启还是事务提交,回滚,都是利连接关联的.我们把连接放在了这个共享的线程当中,那么其方法也是共享的:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号