因为查询出的表和被插入的表不是在同一个数据库,所以先从前台jqgrid表格中获取到数据后,再插入表中。
实现:
获取到jqgrid选中 的每行数据之后,发ajax请求把数据以json格式传入后台,后台用list接收,xml中for循环插入
暂不考虑:
这里先不写切换数据库只写怎么实现,和暂不考虑用户通过检察元素修改网页内容再插入数据的不安全性。
js:
var ids = $("#list5").jqGrid('getGridParam', 'selarrrow'); //获取jqgrid选中的所有行id if( ids.length==0 ){ swal( '请选择一条记录!' ) return; } var rowData = []; for( var i=0;i<ids.length;i++ ){ //再循环通过id得到需要的行数据赋值给rowData var data ={"aab301":$("#list5").jqGrid('getRowData', ids[i]).AAB301, "aac003":$("#list5").jqGrid('getRowData', ids[i]).AAC003, "aac004":$("#list5").jqGrid('getRowData', ids[i]).AAC004, "aac002":$("#list5").jqGrid('getRowData', ids[i]).AAC002, "aic162":$("#list5").jqGrid('getRowData', ids[i]).AIC162, "aac006":$("#list5").jqGrid('getRowData', ids[i]).AAC006 }; rowData.push( data ); } $.ajax({ type:'post', url:"../toPe35/insertToPe35", dataType:"json", contentType:"application/json", //json格式协议 data:JSON.stringify(rowData), //把数组以json格式传给服务器 success:function(data){ data = parseInt($.trim(data)); if (data > 0) { swal( '成功!','', 'success' ) jQuery("#list2").trigger("reloadGrid"); } else { swal( '错误,请稍后再试!','', 'warning' ) jQuery("#list2").trigger("reloadGrid"); } } });
java控制层:
@RequestMapping(value = "insertToPe35", method = {RequestMethod.POST }) @ResponseBody public int insertToPe35( @RequestBody List<Pe35> pe35){ //可以通过list来装
return ipe35Service.insertSelective(pe35); }
xml:
<insert id="insertSelective" parameterType="java.util.List"> insert into pe35 (APE351,AAB301,AAC003,AAC004,AAC002,AIC162,AAC006) <foreach collection="list" item="item" index="i" separator="union all"> select sys_guid(),#{item.aab301,jdbcType=VARCHAR},#{item.aac003,jdbcType=VARCHAR},#{item.aac004,jdbcType=VARCHAR},#{item.aac002,jdbcType=VARCHAR},#{item.aic162,jdbcType=DECIMAL},#{item.aac006,jdbcType=DECIMAL} from dual </foreach> </insert>