最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis實(shí)現(xiàn)批量插入數(shù)據(jù),多重forEach循環(huán)

 更新時(shí)間:2022年02月08日 08:38:44   作者:m0_37837382  
這篇文章主要介紹了MyBatis實(shí)現(xiàn)批量插入數(shù)據(jù),多重forEach循環(huán)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

批量插入數(shù)據(jù),多重forEach循環(huán)

在業(yè)務(wù)開發(fā)過程中,遇到批量插入時(shí),需要進(jìn)行多重forEach循環(huán)的情況。

下面是一個(gè)實(shí)際應(yīng)用

public class SysRoleData extends DataEntity<SysRoleData> {
? ?private static final long serialVersionUID = 1L;
? ?private String kind; ? ? ?//類別(1:按部門2:按角色)
? ?private String roleId; ? ?// role_id
? ?private String roleName; ?//角色名稱
? ?private String officeId; ? //office_id
? ?private String officeName; ?//部門名稱
? ?private String type; ? ? ?// 1.品牌 2.品類 3.品牌&品類
? ?private String dataId; ? ?// 數(shù)據(jù)ID品牌
? ?private String dataName; ? ?//數(shù)據(jù)名稱品牌
? ?private String dataIds; ? ? ? // 數(shù)據(jù)ID品類
? ?private String dataNames; ? ?//數(shù)據(jù)名稱品類
? ?private String groupNo; ?//分組標(biāo)識(shí)
? ?private String useable; //是否可用(1:可用,0:不可用)
? ?private String remarks; //備注
? ?private List<String> officeIdList = Lists.newArrayList();
? ?private List<String> roleIdList = Lists.newArrayList();
? ?private List<BrandCategoryVO> dataList = Lists.newArrayList();
? ?public SysRoleData() {
? ? ? super();
? ?}
? ?public SysRoleData(String id){
? ? ? super(id);
? ?}
? ?public String getKind() {
? ? ? return kind;
? ?}
? ?public void setKind(String kind) {
? ? ? this.kind = kind;
? ?}
? ?@Length(min=0, max=45, message="role_id長度必須介于 0 和 45 之間")
? ?public String getRoleId() {
? ? ? return roleId;
? ?}
? ?public void setRoleId(String roleId) {
? ? ? this.roleId = roleId;
? ?}
? ?public String getRoleName() {
? ? ? return roleName;
? ?}
? ?public void setRoleName(String roleName) {
? ? ? this.roleName = roleName;
? ?}
? ?public String getOfficeName() {
? ? ? return officeName;
? ?}
? ?public void setOfficeName(String officeName) {
? ? ? this.officeName = officeName;
? ?}
? ?@Length(min=0, max=45, message="office_id長度必須介于 0 和 45 之間")
? ?public String getOfficeId() {
? ? ? return officeId;
? ?}
? ?public void setOfficeId(String officeId) {
? ? ? this.officeId = officeId;
? ?}
? ?@Length(min=0, max=4, message="品類長度必須介于 0 和 45 之間")
? ?public String getType() {
? ? ? return type;
? ?}
? ?public void setType(String type) {
? ? ? this.type = type;
? ?}
? ?@NotNull
? ?public String getDataId() {
? ? ? return dataId;
? ?}
? ?public void setDataId(String dataId) {
? ? ? this.dataId = dataId;
? ?}
? ?public String getDataName() {
? ? ? return dataName;
? ?}
? ?public void setDataName(String dataName) {
? ? ? this.dataName = dataName;
? ?}
? ?public String getDataIds() {
? ? ? return dataIds;
? ?}
? ?public void setDataIds(String dataIds) {
? ? ? this.dataIds = dataIds;
? ?}
? ?public String getDataNames() {
? ? ? return dataNames;
? ?}
? ?public void setDataNames(String dataNames) {
? ? ? this.dataNames = dataNames;
? ?}
? ?public String getUseable() {
? ? ? return useable;
? ?}
? ?public void setUseable(String useable) {
? ? ? this.useable = useable;
? ?}
? ?public String getRemarks() {
? ? ? return remarks;
? ?}
? ?public void setRemarks(String remarks) {
? ? ? this.remarks = remarks;
? ?}
? ?public List<BrandCategoryVO> getDataList() {
? ? ? return dataList;
? ?}
? ?public void setDataList(List<BrandCategoryVO> dataList) {
? ? ? this.dataList = dataList;
? ?}
? ?public List<String> getOfficeIdList() {
? ? ? return officeIdList;
? ?}
? ?public void setOfficeIdList(List<String> officeIdList) {
? ? ? this.officeIdList = officeIdList;
? ?}
? ?public List<String> getRoleIdList() {
? ? ? return roleIdList;
? ?}
? ?public void setRoleIdList(List<String> roleIdList) {
? ? ? this.roleIdList = roleIdList;
? ?}
? ?public String getGroupNo() {
? ? ? return groupNo;
? ?}
? ?public void setGroupNo(String groupNo) {
? ? ? this.groupNo = groupNo;
? ?}
}

如上所示為一個(gè)實(shí)體類,會(huì)有dataList和roleIdList或officeIdList,在批量插入時(shí)從而形成多重循環(huán)。 

上圖為列表頁面,

上圖為添加頁面。部門名稱和品牌,品類名稱支持多選,而在保存時(shí),需要將其拆分保存。在查詢時(shí)通過group_concat函數(shù)進(jìn)行聚合展示在列表頁面。

故在批量插入數(shù)據(jù)時(shí):

<insert id="insert">
   INSERT INTO sys_role_data(
   kind,
   role_id,
   office_id,
   type,
   data_id,
   data_name,
   group_no,
   useable,
   remarks,
   create_date,
   create_by,
   update_date,
   update_by
   )VALUES
   <if test="kind != null and kind == 0">
      <foreach collection="officeIdList" item="officeId" separator=",">
         <foreach collection="dataList" item="data" separator=",">
         (
            #{kind},
            null,
            #{officeId},
            #{type},
            #{data.id},
            #{data.name},
            #{groupNo},
            #{useable},
            #{remarks},
            #{createDate},
            #{createBy.id},
            #{updateDate},
            #{updateBy.id}
         )
         </foreach>
      </foreach>
   </if>
   <if test="kind != null and kind == 1">
      <foreach collection="roleIdList" item="roleId" separator=",">
         <foreach collection="dataList" item="data" separator=",">
         (
            #{kind},
            #{roleId},
            null,
            #{type},
            #{data.id},
            #{data.name},
            #{groupNo},
            #{useable},
            #{remarks},
            #{createDate},
            #{createBy.id},
            #{updateDate},
            #{updateBy.id}
         )
         </foreach>
      </foreach>
   </if>
</insert>

由上面sql可以看出,根據(jù)kind不同,進(jìn)行相應(yīng)的雙重forEach循環(huán)插入數(shù)據(jù)。

mybatis insert foreach

項(xiàng)目場(chǎng)景

報(bào)錯(cuò) ,找不到參數(shù)

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘statusInfoId’ not found. Available parameters are [collection, list]

? @Mapper
public interface PatrolRecordMapper extends BaseMapper<PatrolRecord> {
? ? int insertList(@Param(value = "list") List<PatrolRecord> list);
}

mapper 換了很多種寫法

? ? <insert id="insertList" parameterType="com.iricto.soft.patrol.entity.PatrolRecord">
? ? ? ? insert into patrol_record(status_info_id,route_id,place_name,patrol_time,
? ? ? ? patrol_user,patrol_class,`status`)
? ? ? ? VALUES
? ? ? ? <foreach collection="list" item="patrolRecord" separator=",">
? ? ? ? ? ? (patrolRecord.#{statusInfoId},
? ? ? ? ? ? patrolRecord.#{routeId},
? ? ? ? ? ? patrolRecord.#{placeName},
? ? ? ? ? ? patrolRecord.#{patrolTime},
? ? ? ? ? ? patrolRecord.#{patrolUser},
? ? ? ? ? ? patrolRecord.#{patrolClass},
? ? ? ? ? ? patrolRecord.#{status})
? ? ? ? </foreach>
? ? </insert>

mapper

? ? <insert id="insertList" parameterType="com.iricto.soft.patrol.entity.PatrolRecord">
? ? ? ? insert into patrol_record(status_info_id,route_id,place_name,patrol_time,
? ? ? ? patrol_user,patrol_class,`status`)
? ? ? ? VALUES
? ? ? ? <foreach collection="list" item="list"
? ? ? ? ? ? ? ? ?open="(" separator="," close=")">
? ? ? ? ? ? list.#{statusInfoId},
? ? ? ? ? ? list.#{routeId},
? ? ? ? ? ? list.#{placeName},
? ? ? ? ? ? list.#{patrolTime},
? ? ? ? ? ? list.#{patrolUser},
? ? ? ? ? ? list.#{patrolClass},
? ? ? ? ? ? list.#{status}
? ? ? ? </foreach>
? ? </insert>

最后應(yīng)該這么寫才對(duì) : mapper  

? ? <insert id="insertList" parameterType="com.iricto.soft.patrol.entity.PatrolRecord">
? ? ? ? insert into patrol_record(status_info_id,route_id,place_name,patrol_time,
? ? ? ? patrol_user,patrol_class,`status`)
? ? ? ? VALUES
? ? ? ? <foreach collection="list" item="patrolRecord" separator=",">
? ? ? ? ? ? (
? ? ? ? ? ? #{patrolRecord.statusInfoId},
? ? ? ? ? ? #{patrolRecord.routeId},
? ? ? ? ? ? #{patrolRecord.placeName},
? ? ? ? ? ? #{patrolRecord.patrolTime},
? ? ? ? ? ? #{patrolRecord.patrolUser},
? ? ? ? ? ? #{patrolRecord.patrolClass},
? ? ? ? ? ? #{patrolRecord.status})
? ? ? ? </foreach>
? ? </insert>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中有界隊(duì)列的飽和策略(reject policy)原理解析

    Java中有界隊(duì)列的飽和策略(reject policy)原理解析

    這篇文章主要介紹了Java中有界隊(duì)列的飽和策略(reject policy)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java隨機(jī)值設(shè)置(java.util.Random類或Math.random方法)

    Java隨機(jī)值設(shè)置(java.util.Random類或Math.random方法)

    在編程中有時(shí)我們需要生成一些隨機(jī)的字符串作為授權(quán)碼、驗(yàn)證碼等,以確保數(shù)據(jù)的安全性和唯一性,這篇文章主要給大家介紹了關(guān)于Java隨機(jī)值設(shè)置的相關(guān)資料,主要用的是java.util.Random類或Math.random()方法,需要的朋友可以參考下
    2024-08-08
  • 詳解Java語言中一個(gè)字符占幾個(gè)字節(jié)?

    詳解Java語言中一個(gè)字符占幾個(gè)字節(jié)?

    這篇文章主要介紹了Java語言中一個(gè)字符占幾個(gè)字節(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • idea中如何使用(Undo Commit...)

    idea中如何使用(Undo Commit...)

    這篇文章主要介紹了idea中如何使用(Undo Commit...)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • java隨機(jī)抽取指定范圍不重復(fù)的數(shù)字

    java隨機(jī)抽取指定范圍不重復(fù)的數(shù)字

    這篇文章主要介紹了java隨機(jī)抽取指定范圍不重復(fù)的數(shù)字的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • Java MyBatis-Plus之初始MyBatis

    Java MyBatis-Plus之初始MyBatis

    MyBatis-Plus是一個(gè)MyBatis的增強(qiáng)工具,在MyBatis的基礎(chǔ)上只做增強(qiáng)不做修改,為簡化開發(fā)、提高效率而生,本文給大家介紹MyBatis-Plus簡介和快速入門教程,需要的朋友參考下吧
    2021-10-10
  • java和Spring中觀察者模式的應(yīng)用詳解

    java和Spring中觀察者模式的應(yīng)用詳解

    這篇文章主要介紹了java和Spring中觀察者模式的應(yīng)用,,具有一定的參考價(jià)值,感興趣的可以了解一下,希望能夠給你帶來幫助
    2021-10-10
  • 自定義注解基本概念和使用方式

    自定義注解基本概念和使用方式

    這篇文章主要介紹了自定義注解基本概念和使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java實(shí)現(xiàn)的連續(xù)奇數(shù)(n+2*x)是合數(shù)的算法題暴力算法

    Java實(shí)現(xiàn)的連續(xù)奇數(shù)(n+2*x)是合數(shù)的算法題暴力算法

    這篇文章主要介紹了Java實(shí)現(xiàn)的連續(xù)奇數(shù)(n+2*x)是合數(shù)的算法題暴力算法,本文包含運(yùn)算結(jié)果和實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-09-09
  • Java實(shí)現(xiàn)格式化打印慢SQL日志的方法詳解

    Java實(shí)現(xiàn)格式化打印慢SQL日志的方法詳解

    不管我們使用何種語言開發(fā),一旦程序發(fā)生異常,日志是一個(gè)很重要的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)格式化打印慢SQL日志的相關(guān)資料,需要的朋友可以參考下
    2022-10-10

最新評(píng)論

屏山县| 响水县| 怀远县| 衡阳县| 天气| 芦溪县| 星座| 霸州市| 廉江市| 丰台区| 石首市| 崇义县| 民乐县| 达拉特旗| 连州市| 阿勒泰市| 巩留县| 余干县| 丹巴县| 张北县| 溧水县| 马关县| 石景山区| 海晏县| 宁国市| 涪陵区| 册亨县| 敦煌市| 东源县| 堆龙德庆县| 沁源县| 四子王旗| 黄平县| 图片| 日照市| 同江市| 轮台县| 远安县| 平南县| 夏河县| 平阴县|