JAVA 操作Oracle 数据库Blob 字段

因为今天需要测试插入Oracle 数据库带有Blob字段的数据的速度。之前几乎没用过Oracle 数据库所以在写代码测试之前也遇到过很多坑。

测试框架:springBoot +Mybatis 

框架的搭建就不具体说明了。

总体思路:

插入:因为Oracle BLOB字段存储的数据是二进制的数据。所以我先把图片转换成二进制数据用byte[]数组来存储进行插入。

导出:把BLOB字段的二进制数据查询出来,再写入图片中。

 long startTime = System.currentTimeMillis();
        RkSfzZp  sfzZp = new RkSfzZp();
        sfzZp.setSLH(UUID.randomUUID().toString());
        sfzZp.setGMSFHM("410727199303282312");
        sfzZp.setGXSJ("20200331000000");
        sfzZp.setLRRQ(new Date());
        sfzZp.setRH(11);
        sfzZp.setRCTIDSJ("20200331000000");
        sfzZp.setYXBZ("Y");
        sfzZp.setSSSSXQ_DM("1111111");
        sfzZp.setDSBS("411000");
        sfzZp.setSCRHJKSJ("20200331000000");
        /**
         * 以下是主要逻辑===================================================================
         */
        try (FileInputStream   fileInputStream = new FileInputStream(new File("E://1.jpg"));
             ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
        ){
            byte[] bytes = new byte[1024];
            int let =0;
            while ((let = fileInputStream.read(bytes))!=-1) {
                arrayOutputStream.write(bytes,0,let);
            }
             byte[] toByteArray = arrayOutputStream.toByteArray();

            sfzZp.setZP(toByteArray);
            /**
             * =========================================================================================
             */
        } catch (IOException e) {
            e.printStackTrace();
        }
        sfzMapper.addSfzZp(sfzZp);
        long lastTime  = System.currentTimeMillis();


        System.out.println("当前耗时时间:"+(lastTime-startTime));

mybatis文件:


INSERT INTO RK_SFZ_ZP ( SLH, RH, GMSFHM,ZP, LRRQ, YXBZ, SSSSXQ_DM, DSBS, GXSJ, SCRHJKSJ, RCTIDSJ)
VALUES
	(
	#{SLH,jdbcType=VARCHAR},
	#{RH,jdbcType=NUMERIC},
	#{GMSFHM,jdbcType=VARCHAR},
	#{ZP,jdbcType=BLOB},
	#{LRRQ,jdbcType=DATE},
	#{YXBZ,jdbcType=CHAR},
	#{SSSSXQ_DM,jdbcType=VARCHAR},
	#{DSBS,jdbcType=VARCHAR},
	#{GXSJ,jdbcType=VARCHAR},
	#{SCRHJKSJ,jdbcType=VARCHAR},
	#{RCTIDSJ,jdbcType=VARCHAR}
	)

    

实体类:

@Data
public class RkSfzZp {

    private String SLH;
    private  int RH;
    private  String GMSFHM;
    
    private byte[] ZP;
    
    private Date LRRQ;
    private String YXBZ;
    private String SSSSXQ_DM;
    private  String DSBS;
    private    String  GXSJ;
    private  String SCRHJKSJ;
    private  String RCTIDSJ;
}

 

你可能感兴趣的:(JAVA 操作Oracle 数据库Blob 字段)