StrignBufferとして来るXML応答をメソッドに保存しようとしています。この文字列データをCLOBとしてSQLに保存し、同じものを取得する必要があります。
応答は最大3〜4Kbで、StringBufferに再度取得する必要があります
db固有のメソッド/jarを含まないチュートリアルまたはサンプルコードを教えてもらえますか?
CLOBが適切でない場合、または他のより良い代替手段である場合は、db列タイプを変更できます。
提案してください。
CLOB
を呼び出すことでを作成し、次に、、connection.createClob()
などのメソッドを設定できます。setString
setCharacterStream
setAsciiStream
を作成しPreparedStatement
て呼び出し、setClob()
CLOBをデータベースに格納します。
データの取得はまったく同じです。データをaから読み取り、またはResultSet
を呼び出します。getCharacterStream
getAsciiStream
getSubStream
の場合NamedParameterJdbcTemplte
:
MapSqlParameterSource paramSource = new MapSqlParameterSource();
paramSource.addValue("clob", "a long long text", Types.CLOB);
namedTemplate.update(INSERT_STMT, paramSource);
の場合JdbcTemplate
:
<bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/>
</bean>
と:
private @Autowire LobHandler lobHandler;
jdbcTemplate.update("insert into customer(id,name,comments) "
+ "values (?, ?, ?)", new PreparedStatementSetter() {
public void setValues(PreparedStatement ps) throws SQLException {
ps.setLong(1, 2L);
ps.setString(2, "Jon");
lobHandler.getLobCreator().setClobAsString(ps, 3, "Clob data");
}
});
から文字列を抽出するにはResultSet
:
inc.setDetail(lobHandler.getClobAsString(rs, "DETAIL"));
公式ドキュメントを参照してください:http://docs.spring.io/spring/docs/3.0.x/reference/jdbc.html#jdbc-lob