mybatis中一对多添加

本文详细介绍了在MyBatis中处理一对多关系插入数据的方法,包括两种常见方式:1. 前台传一个字符串,后台用集合接收;2. 前台传JSON字符串,后台解析成对象列表。这两种方式都需要在同一个方法中同时保存主表和从表数据,以确保数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果一个表可以上传一个图片,也可以上传多个图片,也可以不上传图片,图片的信息放在附件表里面,那么后台怎样接收前台传过来的值呢?前台后怎样传第图片的值呢。

1.第一种方法是前台传一个字符串过来。前台将图片名字通过逗号分割传到后台,后台用一个集合来接收。

例: 前台:name="imageName" imangeName = "风景图片1,风景图片2,......",或者imangeName ="风景图片"或者imangeName =""

后台:public ResultData insertComment(Comment comment,@RequestParam(value="imangeName ",required=false) List<String> atts) 注:@RequestParam里面的value属性必须和前台的name属性一致,required=false表示该字段可以为空,因为前台可以不传图片属性,若必须要求前台传图片属性,即必须上传图片,那么将required=false去掉就OK了,应为@RequestParam默认的就是required=true

controller调用Service里面的实现方法,对主表进行保存的同时循环将图片保存在附件表里面(主表调用主表的保存方法,图片调用附件的保存方法,两个保存必须在一个方法中,这样当一个表不成功时才会回滚方法)

junit测试controller传参的格式为:.param("startlevel", "5").param("imageName", "白菜,冬瓜")

2.第二种是前台传一个json格式的字符串,后台用一个String类型的变量接收。

例: 前台:[{id:'',imagename:'a1',imageupdatename:'',url:'a1',commentid:'',createdate:''},{id:'',imagename:'a2',imageupdatename:'',url:'a2',commentid:'',createdate:''}]

后台:@RequestMapping(value="/insertComment",method=RequestMethod.POST)
public ResultData insertComment(Comment comment,@RequestParam("key") String json){
try {
List<CommentAttachment> list = null ;

//对json格式进行解析
list = GsonUtil.getGson().fromJson(json, new TypeToken<List<CommentAttachment>>(){}.getType()) ;
comment = commentService.insertComment(comment, list);
return new ResultData(comment);
} catch (Exception e) {
e.printStackTrace();
return SchExceptionUtil.ExceptionConvertState(e);
}

controller调用Service里面的实现方法,对主表进行保存的同时循环将图片保存在附件表里面(主表调用主表的保存方法,图片调用附件的保存方法,两个保存必须在一个方法中,这样当一个表不成功时才会回滚方法)

junit测试controller传参的格式:.param("palate", "4").param("environment", "4").param("service", "4").param("key", "[{id:'',imagename:'a1',imageupdatename:'',url:'a1',commentid:'',createdate:''},{id:'',imagename:'a2',imageupdatename:'',url:'a2',commentid:'',createdate:''}]")


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值