JAVAオペレーションOracleデータベースBlobフィールド

2779 ワード

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