2)Js部分代码太长,就只贴一个提交方法吧
functioncreateProduce(inter_id){
varpostData={
id:$("#inter_id").val(),
item_id:$("#item_id").val(),
name:$("#name").val(),
content:$("#content").val(),
explain_info:$("#explain_info").val(),
jsonData:JSON.stringify(jsonData)//参数明细信息,字段就是接口配置参数bean中的字段信息
};
$.ajax({
url:Url+'test/createPro',
type:'get',//GET
async:false,//或false,是否异步
data:JSON.stringify(postData),
timeout:5000,//超时时间
dataType:'json',//返回的数据格式:success:function(result,textStatus,jqXHR){
if(result.result=="1"){//编辑赋值
layer.alert("创建成功",{icon:0});
}else{
layer.alert("创建失败,请检查sql语句,注意结尾不能有分号!具体错误信息:"+result.msg,{icon:5});
}
},
error:function(xhr,textStatus){
layer.alert(textStatus);
}
});
}
3、将数据上传到后台之后,后台生成存储过程。当然一般情况下,我们还是先把数据接口和接口明细数据持久化保存,再来执行创建操作,可以保证数据不会丢失。此处由于篇幅问题,我就省略了中间这一步。
1)创建一个service的接口:
publicinterfaceTestService{
ResultInfocreatePro(Mapmap);
}
2)然后创建接口的实现类:
@Service
publicclassTestServiceImplimplementsTestService{
/**
*创建存储过程
*
*@parammap接口配置和接口参数信息
*参数详解:type输入输出参数,取值为in,out
*paraType参数类型。取值为:1:int2:double3:varchar4:datetime
*@return
*/
@Override
@Transactional
publicvoidcreatePro(Mapmap){
ResultInforesultInfo=newResultInfo();
QtInterfaceqtInterface=newQtInterface();
qtInterface=buildInterface(map,qtInterface);//加载接口配置信息
ListparaList=newArrayList();
paraList=buildParam(map.get("jsonData"));//加载接口配置信息
StringBufferbf=newStringBuffer();//建立生成过程的语句
bf.append("createprocedure\t");
bf.append(qtInterface.getName());
bf.append("\n");
bf.append("(");
Stringpara_type="";
inti=1;
for(QtInterfaceParameterqt:paraList){
switch(qt.getParaType()){//参数类型
case"1":
para_type="int";
break;
case"2":
para_type="double";
break;
case"3":
para_type="varchar("+qt.getParaLen()+")";
break;
case"4":
para_type="datetime";
break;
default:
para_type="varchar(255)";
break;
}
if(i==paraList.size()){
bf.append(""+qt.getType()+""+qt.getName()+""+para_type+")");
}else{
bf.append(""+qt.getType()+""+qt.getName()+""+para_type+",");
}
i++;
}
bf.append("COMMENT'"+qtMonitorWarnInterface.getInfo()+"'\n");//添加描述信息
bf.append("BEGIN\n");
bf.append(qtInterface.getContent());//存储过程内容
bf.append(";\nEND;");
//先执行删除操作
jdbcTemplate.execute("dropprocedureifexists"+qtInterface.getName()+";");
jdbcTemplate.execute(bf.toString());
}
/**
*初始化接口配置信息
*
*/
privateQtInterfacebuildInterface(Mapmap,QtInterfaceqtInterface){
//接口配置名称
if(map.get("name")!=null&&!"".equals(map.get("name"))){
qtInterface.setName((String)map.get("name"));
}
//此处省略其他项,其他项的取值方法跟上面的一样…
returnqtInterface;
}
/**
*初始化接口配置参数明细
*
*/
privateListbuildParam(StringpostData){
Listlist=newArrayList();
if(postData!=null&&!"".equals(postData)){
List
3)添加控制器进行调用:
@Controller
@RequestMapping(value="/test")
publicclassTestController{
@Autowired
privateTestServicetestService;
@RequestMapping(value="/createPro",method=RequestMethod.GET)
publicResultInfocreatePro(@RequestBodyMapmap
){
ResultInforesultInfo=newResultInfo();
try{
testService.createPro(Id);
resultInfo.setResult(1);
resultInfo.setMsg("创建过程成功");
}catch(Exceptione){
resultInfo.setResult(-1);
resultInfo.setMsg(e.getMessage());
}
returnresultInfo;
}
}
4)最后动态生成的SQL就是这个样子:
CREATEPROCEDURE`testbase`.`test`(ina_user_idvarchar(100))
COMMENT'测试接口'
BEGIN
select*fromuserInfowhereuser_id=a_user_id;
END
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。