Springboot集成mybatis時批量插入
阿新 • • 發佈:2018-09-03
數據 pro ted 獲取 vid public 數據庫 一個 html
通過註解的形式實現數據庫的批量插入
/** * @author Holley * @Description 請輸入一句話進行描述 * @create 2018-07-16 12:09 **/ @Component @Mapper public interface TagOfPatientDao { @InsertProvider(type = TagOfPatientProvider.class,method = "insertAll") void insertAll(@Param("list") List<TagOfPatient>list); }
/*** @author Holley * @Description 批量插入 * @create 2018-07-16 13:21 **/ public class TagOfPatientProvider { public String insertAll(@Param("list") List<TagOfPatient> list){ StringBuilder sb = new StringBuilder(); sb.append("insert into tag_of_patient"); sb.append("(pid,tagid,status,created)"); sb.append("values"); MessageFormat mf = new MessageFormat("(#‘{‘list[{0}].pid},#‘{‘list[{0}].tagid},0,now())"); for(int i = 0;i < list.size();i++){ sb.append(mf.format(new Object[]{i})); if(i < (list.size() - 1)){ sb.append(","); } }return sb.toString(); } }
註意:在dao層向provider類中傳參時,如果參數只有一個map類型,則此時參數前一定不要使用@Param("map"),否則,在provider類中獲取到的map不是當前的map,而是在當前map上又封裝了一層map。(具體原因不是很清楚,如果有哪位翻出了源碼,請指教下)
參考
http://f0rb.iteye.com/blog/1207384
https://www.cnblogs.com/fjdingsd/p/5143625.html
Springboot集成mybatis時批量插入