PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara menggunakan PostgreSQL hstore/json dengan JdbcTemplate

Walaupun agak terlambat untuk jawabannya (untuk bagian insert), semoga bisa bermanfaat untuk orang lain:

Ambil pasangan kunci/nilai dalam HashMap:

Map<String, String> hstoreMap = new HashMap<>();
hstoreMap.put("key1", "value1");
hstoreMap.put("key2", "value2");

PGobject jsonbObj = new PGobject();
jsonbObj.setType("json");
jsonbObj.setValue("{\"key\" : \"value\"}");

gunakan salah satu cara berikut untuk menyisipkannya ke PostgreSQL:

1)

jdbcTemplate.update(conn -> {
     PreparedStatement ps = conn.prepareStatement( "INSERT INTO table (hstore_col, jsonb_col) VALUES (?, ?)" );
     ps.setObject( 1, hstoreMap );
     ps.setObject( 2, jsonbObj );
});

2)

jdbcTemplate.update("INSERT INTO table (hstore_col, jsonb_col) VALUES(?,?)", 
new Object[]{ hstoreMap, jsonbObj }, new int[]{Types.OTHER, Types.OTHER});

3) Atur hstoreMap/jsonbObj di POJO (hstoreCol bertipe Map dan jsonbObjCol bertipe PGObject)

BeanPropertySqlParameterSource sqlParameterSource = new BeanPropertySqlParameterSource( POJO );
sqlParameterSource.registerSqlType( "hstore_col", Types.OTHER );
sqlParameterSource.registerSqlType( "jsonb_col", Types.OTHER );
namedJdbcTemplate.update( "INSERT INTO table (hstore_col, jsonb_col) VALUES (:hstoreCol, :jsonbObjCol)", sqlParameterSource );

Dan untuk mendapatkan nilai:

(Map<String, String>) rs.getObject( "hstore_col" ));
((PGobject) rs.getObject("jsonb_col")).getValue();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lihat dan hapus cache/buffer Postgres?

  2. Efek pemfilteran yang tidak terduga pada hasil dari kueri crosstab()

  3. Gabungkan nilai boolean menjadi true jika salah satu kolom sumber benar

  4. Apakah ada cara untuk membuat pg_dump mengecualikan urutan tertentu?

  5. postgresql - dapatkan daftar perbedaan kolom antara 2 tabel