[SPRING] jdbctemplate를 통해 SQL 삽입의 ID
SPRINGjdbctemplate를 통해 SQL 삽입의 ID
Spring jdbc 템플릿 호출에서 SQL insert로부터 @@ identity를 얻을 수 있습니까? 그렇다면 어떻게?
해결법
-
==============================
1.JDBCTemplate.update 메소드는 자동 생성 된 키를 검색하는 데 사용할 수있는 GeneratedKeyHolder라는 객체를 가져 오기 위해 오버로드됩니다. 예를 들어 (여기에서 가져온 코드) :
JDBCTemplate.update 메소드는 자동 생성 된 키를 검색하는 데 사용할 수있는 GeneratedKeyHolder라는 객체를 가져 오기 위해 오버로드됩니다. 예를 들어 (여기에서 가져온 코드) :
final String INSERT_SQL = "insert into my_test (name) values(?)"; final String name = "Rob"; KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update( new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement(INSERT_SQL, new String[] {"id"}); ps.setString(1, name); return ps; } }, keyHolder); // keyHolder.getKey() now contains the generated key
-
==============================
2.SimpleJdbcInsert.executeAndReturnKey는 어떻습니까? 입력에 따라 두 가지 형식이 필요합니다.
SimpleJdbcInsert.executeAndReturnKey는 어떻습니까? 입력에 따라 두 가지 형식이 필요합니다.
-
==============================
3.todd.pierzina 답변에 대한 자세한 메모 / 샘플 코드 추가
todd.pierzina 답변에 대한 자세한 메모 / 샘플 코드 추가
jdbcInsert = new SimpleJdbcInsert(jdbcTemplate); jdbcInsert.withTableName("TABLE_NAME").usingGeneratedKeyColumns( "Primary_key"); Map<String, Object> parameters = new HashMap<>(); parameters.put("Column_NAME1", bean.getval1()); parameters.put("Column_NAME2", bean.getval2()); // execute insert Number key = jdbcInsert.executeAndReturnKey(new MapSqlParameterSource( parameters)); // convert Number to Int using ((Number) key).intValue() return ((Number) key).intValue();
-
==============================
4.나는 "one-liner"가 있는지 모르지만 이것은 (적어도 MSSQL의 경우) 트릭을 수행하는 것으로 보인다.
나는 "one-liner"가 있는지 모르지만 이것은 (적어도 MSSQL의 경우) 트릭을 수행하는 것으로 보인다.
// -- call this after the insert query... this._jdbcTemplate.queryForInt( "select @@identity" );
여기에 괜찮은 기사.
from https://stackoverflow.com/questions/1665846/identity-from-sql-insert-via-jdbctemplate by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 로그에 Spring 트랜잭션 표시하기 (0) | 2018.12.22 |
---|---|
[SPRING] Tomcat에 Spring 부트 배치 (0) | 2018.12.22 |
[SPRING] Spring 3.0 - XML 스키마 네임 스페이스 용 Spring NamespaceHandler를 찾을 수 없음 [http://www.springframework.org/schema/security] (0) | 2018.12.22 |
[SPRING] JPA (Hibernate)와 JDBC (JdbcTemplate 또는 MyBatis)가 동일한 트랜잭션을 공유하도록 Spring을 구성하는 방법 (0) | 2018.12.22 |
[SPRING] 스프링 보안에서 커스텀 역할 / 권한을 사용하려면 어떻게해야합니까? (0) | 2018.12.22 |