1. 程式人生 > >Springboot集成mybatis時批量插入

Springboot集成mybatis時批量插入

數據 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時批量插入