Я хочу вставить данные в мою таблицу, но вставить только те, которые не существуют в моей БД.Я использую Spring 5, jdbcTemplate и в памяти H2.
Мне нужно что-то подобное ниже, но H2 не имеет PL.Как я могу написать правильный метод Java с аннотацией @Transactional
для достижения атомарной операции.Что-то очень похожее на putIfAbsent()
в ConcurrentHashMap
.
Что мне нужно, если у H2 есть PL:
@Transactional
public void create(String city, Double temperature) {
String query = "BEGIN\n" +
" IF NOT EXISTS (SELECT * FROM weather \n" +
" WHERE city = :city)\n" +
" BEGIN\n" +
" INSERT INTO weather (city, temperature, time_stamp)\n" +
" VALUES (:city, :temperature, :time_stamp)\n" +
" END\n" +
"END";
MapSqlParameterSource paramMap = new MapSqlParameterSource();
paramMap.addValue("city", city);
paramMap.addValue("temperature", temperature);
paramMap.addValue("time_stamp", new Date());
jdbcTemplate.update(query, paramMap);
System.out.println("Inserted into Weather Table Successfully");
}