JAVAオペレーションOracleデータベースBlobフィールド
2779 ワード
OracleデータベースにBlobフィールドがあるデータを挿入する速度をテストする必要があるためです.Oracleデータベースはほとんど使用されていなかったため、コードテストを書く前に多くのピットに遭遇しました.
テストフレームワーク:springBoot+Mybatis
フレームワークの構築については具体的に説明しません.
全体的な考え方:
挿入:Oracle BLOBフィールドに格納されているデータはバイナリのデータです.だから私はまず画像をバイナリデータに変換してbyte[]配列で挿入を格納します.
エクスポート:BLOBフィールドのバイナリデータをクエリーして、画像に書き込みます.
mybatisファイル:
エンティティークラス:
テストフレームワーク: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;
}