1. param : 값 하나만 받아올 때
▼ controller.java
AtomicLong generatedKey = new AtomicLong();
myMapper.insertData(name, generatedKey.get());
System.out.println("Generated Key: " + generatedKey.get()); // 여기!
이 때 Wrapper 클래스로 값을 받아오는 것이 유의할 점.
* Wrapper 객체
기본형=원시타입=primitive type의 데이터를 Object=객체로 바꿀 때 사용한다.
int → Integer
char → Character
...
▼ mapper.java
import org.apache.ibatis.annotations.Param;
public interface MyMapper {
void insertData(@Param("name") String name, @Param("generatedKey") Long generatedKey);
}
▼ mapper.xml
<insert id="insertData" parameterType="map" useGeneratedKeys="true" keyProperty="generatedKey">
INSERT INTO my_table (name) VALUES (#{name})
</insert>
2. vo
▼ controller.java
userVo.setName("kim");
mapper.addUser(userVo);
userNo = userVo.getUSER_NO(); // 여기!
▼ mapper.java
int addUser(UserVo vo);
▼ mapper.xml
<insert id="addUser" parameterType="....user.vo.UserVo" useGeneratedKeys="true" keyProperty="USER_NO">
3. map
자동 생성된 값이 자동으로 map에 들어간다.
▼ controller.java
import java.util.HashMap;
import java.util.Map;
public class MyService {
public void insertAndGetGeneratedKey(MyMapper myMapper) {
Map<String, Object> params = new HashMap<>();
params.put("name", "Sample Name");
myMapper.insertData(params);
System.out.println("Generated Key: " + params.get("id")); // 여기!
}
}
▼ mapper.xml
<insert id="insertData" parameterType="map" useGeneratedKeys="true" keyProperty="id">
INSERT INTO my_table (name) VALUES (#{name})
</insert>
'┝ DB > ┝ RDBMS' 카테고리의 다른 글
[spring boot] 셋업 - JPA와 Driver의 차이 (0) | 2025.01.22 |
---|---|
[SpringBoot] MyBatisSystemException과 org.springframework.dao.UncategorizedDataAccessException (1) | 2024.11.01 |
[postgre] (0) | 2023.08.29 |
database와 relation (0) | 2023.07.07 |
ㄱ. 오라클 목차 (0) | 2022.03.01 |