Mybatis 주석 대량 삽입 자동으로 생성된 id 반환
9108 단어 MySQL
A표에 대량으로 데이터를 삽입한 다음에 삽입한 데이터의 메인 키를 되돌려야 합니다.유수기록표 B에 저장합니다.
표 구조
두 테이블 구조 테이블 A
CREATE TABLE `channel_link` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`channel_id` int(11) NOT NULL COMMENT ' id',
`recruit_type` int(11) NOT NULL COMMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT=' '
표 B
CREATE TABLE `channel_operate_history` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`operate_target_type` int(11) NOT NULL COMMENT ' ',
`operate_target_record_id` int(11) NOT NULL COMMENT ' id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT=' '
구체적 실현
매개 변수는 @Param의 이름을 마퍼 파일이나 Insert 주석의collection의 내용과 대응합니다.
코드 레이어 DAO
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert({
""</span><span class="token punctuation">,</span>
<span class="token string">"insert into "</span><span class="token punctuation">,</span> table<span class="token punctuation">,</span> ALL_COLUMNS_NO_ID<span class="token punctuation">,</span> <span class="token string">" values"</span><span class="token punctuation">,</span>
<span class="token string">"<foreach item='item' collection='list' open='' separator=',' close=''>"</span><span class="token punctuation">,</span>
INSERT_VALUES_NO_ID<span class="token punctuation">,</span>
<span class="token string">"</foreach>"</span><span class="token punctuation">,</span>
<span class="token string">" "
})
int batchInsert(@Param("list") List<ChannelLink> channelLinks);
서비스 계층
List<ChannelLink> models = generateModels(param);
//ids id.
List<Integer> ids = models.foreach(model -> ids.add(model.getId());
doSomethingsWithIds(ids);
참고 자료
실천 1:https://blog.csdn.net/shujukuss/article/details/79957827 github issue:https://github.com/mybatis/mybatis-3/pull/324
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.