首页 > 作文

MyBatis实现批量插入数据,多重forEach循环

更新时间:2023-04-04 22:43:11 阅读: 评论:0

目录
批量插入数据,多重foreach循环下面是一个实际应用mybatis inrt foreach项目场景

批量插入数据,多重foreach循环

在业务开发过程中,遇到批量插入时,需要进行多重foreach循环的情况。

下面是一个实际应用

public class sysroledata extends dataentity<sysroledata> { private static final long rialversionuid = 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;  // 数据id品牌 private string dataname;  //数据名称品牌 private string dataids;    // 数据id品类 private string datanames;  //数据名称品类 private string groupno; //分组标识 private string uable; //是否可用(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 tkind(string kind) {   this.kind = kind; } @length(min=0, max=45, message="role_id长度必须介于 0 和 45 之间") public string getroleid() {   return roleid; } public void troleid(string roleid) {   this.roleid = roleid; } public string getrolename() {   return rolename; } public void trolename(string rolename) {   this.rolename = rolename; } public string getofficename() {   return officename; } public void tofficename(string officename) {   this.officename = officename; } @length(min=0, max=45, message="office_id长度必须介于 0 和 45 之间") public string getofficeid() {   return officeid; } public void tofficeid(string officeid) {   this.officeid = officeid; } @length(min=0, max=4, message="品类长度必须介于 0 和 45 之间") public string gettype() {   return type; } public void ttype(string type) {   this.type = type; } @notnull public string getdataid() {   return dataid; } public void tdataid(string dataid) {   this.dataid = dataid; } public string getdataname() {   return dataname; } public void tdataname(string dataname) {   this.dataname = dataname; } public string getdataids() {   return dataids; } public void tdataids(string dataids) {   this.dataids = dataids; } public string getdatanames() {   return datanames; } public void tdatanames(string datanames) {   this.datanames = datanames; } public string getuable() {   return uable; } public void tuable(string uable) {   this.uable = uable; } public string getremarks() {   return remarks; } public void tremarks(string remarks) {   this.remarks = remarks; } public list<brandcategoryvo> getdatalist() {   return datalist; } public void tdatalist(list<brandcategoryvo> datalist) {   this.datalist = datalist; } public list<string> getofficeidlist() {   return officeidlist; } public void tofficeidlist(list<string> officeidlist) {   this.officeidlist = officeidlist; } public list<string> getroleidlist() {   return roleidlist; } public void troleidlist(list<string> roleidlist) {   this.rolei成绩查询系统平台dlist = roleidlist; } public string getgroupno() {   return groupno; } public void tgroupno(string groupno) {   this.groupno = groupno; }}

如上所示为一个实体类,会有datalist和roleidlist或officeidlist,在批量插入时从而形成多重循环。

上图为列表页面,

上图为添加页面。部门名称和品牌,品类名称支持多选,而在保存时,需要将其拆分保存。在查询时通过group_concat函数进行聚合展示在列表页面。

故在批量插入数据时:

<inrt id="inrt">   inrt into sys_role_data(   kind,   role_id,   office_id,   type,   data_id,   data_name,   group_no,   uable,   remarks,   create_date,   create_by,   update_date,   update_by   )values   <i大学生怎么找工作f test="kind != null and kind == 0">      <foreach collection="officeidlist" item="officeid" parator=",">         <foreach collection="datalist" item="data" parator=",">         (            #{kind},            null,            #{officeid},            #{type},            #{data.id},            #{data.name},            #{groupno},            #{uable},            #{remarks},            #{createdate},            #{createby.id},            #{updatedate},            #{updateby.id}         )         </foreach>      </foreach>   </if>   <if test="kind != null and kind == 1">      <foreach collection="roleidlist" item="roleid" parator=",">         <foreach collection="datalist" item="data" parator=",">         (            #{kind},            #{roleid},            null,            #{type},            #{data.id},            #{data.name},            #{groupno},            #{uable},            #{remarks},            #{createdate},            #{createby.id},            #{updatedate},            #{updateby.id}         )         </foreach>      </foreach>   </if></inrt>

由上面sql可以看出,根据kind不同,进行相应的双重foreach循环插入数据。

mybatis inrt foreach

项目场景

报错 ,找不到参数

org.mybatis.spring.mybatissystemexception: nested exception is org.apache.ibatis.binding.bindingexception: parameter ‘statusinfoid’ not found. available parameters are [collection, list]

 @mapperpublic interface patrolrecordmapper extends bamapper<patrolrecord> {  int inrtlist(@param(value = "list") list<patrolrecord> list);}

mapper 换了很多种写法

  <inrt id="inrtlist" parametertype="com.iricto.soft.patrol.entity.patrolrecord">    inrt into patrol_record(status_info_id,route_id,place_name横线怎么打,patrol_time,    patrol_ur,patrol_class,`status`)    values    <foreach collection="list" item="patrolrecord" parator=",">      (patrolrecord.#{statusinfoid},      patrolrecord.#{routeid},      patrolrecord.#{placename},      patrolrecord.#{patroltime},      patrolrecord.#{patrolur},      patrolrecord.#{patrolclass},      patrolrecord.#{status})    </foreach>  </inrt>

mapper

  <inrt id="inrtlist" parametertype="com.iricto.soft.patrol.entity.patrolrecord">    inrt into patrol_record(status_info_id,route_id,place_name,patrol_time,    patrol_ur,patrol_class,`status`)    values    <foreach collection="list" item="list"        open="(" parator="," clo=")">      list.#{statusinfoid},      list.#{routeid},      list.#{placename},      list.#{patroltime},      list.#{patrolur},      list.#{patrolclass},      list.#{status}    </foreach>  </inrt>英语四级改革

最后应该这么写才对 : mapper

  <inrt id="inrtlist" parametertype="com.iricto.soft.patrol.entity.patrolrecord">    inrt into patrol_record(status_info_id,route_id,place_name,patrol_time,    patrol_ur,patrol_class,`status`)    values    <foreach collection="list" item="patrolrecord" parator=",">      (      #{patrolrecord.statusinfoid},      #{patrolrecord.routeid},      #{patrolrecord.placename},      #{patrolrecord.patroltime},      #{patrolrecord.patrolur},      #{patrolrecord.patrolclass},      #{patrolrecord.status})    </foreach>  </in运算符号包括哪些rt>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。

本文发布于:2023-04-04 22:43:10,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/491032a8a10274602499bdd5e028f099.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:MyBatis实现批量插入数据,多重forEach循环.doc

本文 PDF 下载地址:MyBatis实现批量插入数据,多重forEach循环.pdf

上一篇:漂白剂怎么用
下一篇:返回列表
标签:品类   数据   批量   名称
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图