mybatis中一对多添加

来源:互联网 发布:中央一台网络电视 编辑:程序博客网 时间:2024/04/25 01:03

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

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:''}]")


0 0
原创粉丝点击