这篇文章主要讲解了Java Spring动态生成mysql存储过程的详细解析,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
一、 背景
由于公司业务需要动态配置一些存储过程来生成数据,之前尝试过使用jpa来完成,或多或少都存在一些问题,最后使用了spring的Jdbctemplate。
二、 环境
1.此随笔内容基于spring boot项目
2.数据库为Mysql 5.7.9版本
3.jdk 版本为1.8
三、 说明
说明:为方便表示,下列存储过程在代码中的表示我称之为接口配置
四、 内容
1、定义接口和接口参数bean;
1)接口配置bean:
@Entity @Table(name="qt_interface") public class QtInterface { @Id private String id; private String name; private String content; private String info; private String status; //此处省略get、set… }
2)接口配置参数bean:
@Entity @Table(name="qt_interface_parameter") public class QtInterfaceParameter { @Id private String id; @Column(name="inter_id") private String interId; private String name; //参数名称 private String explain_info; //参数描述 private String type;// 输入输出类型 private String paraType; // 参数类型 private Integer paraLen; //此处省略get、set… }
2、编写页面输入接口配置的信息;
1)Html部分代码:
<div class="form-group"> <label for="name" class="col-sm-2 control-label">接口名称<a >*</a>:</label> <div class="col-sm-4"> <input type="text" id="name" name="name" class="form-control"/> </div> <label for="status" class="col-sm-2 control-label">接口状态<a >*</a>:</label> <div class="col-sm-4" > <select id="status" disabled="disabled" class="form-control"> <option value="0">保存</option> <option value="1">已创建</option> </select> </div> </div> <div class="form-group"> <label for="content" class="col-sm-2 control-label">接口内容<a >*</a>:</label> <div class="col-sm-10"> <textarea id="content" name="content" rows="5" class="form-control"></textarea> </div> </div> <div class="form-group"> <label for="explain_info" class="col-sm-2 control-label">接口说明:</label> <div class="col-sm-10"> <textarea id="explain_info" name="explain_info" rows="3" class="form-control"></textarea> </div> </div> <div class="form-group"> <label for="qtInterList" class="col-sm-2 control-label">接口参数:</label> <div class="col-sm-10"> <div class="ibox-content" > <table id="qtInterList" class="easyui-datagrid"> </table> </div> </div> </div>
2)Js部分代码太长,就只贴一个提交方法吧
function createProduce(inter_id) { var postData = { 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 的接口:
public interface TestService { ResultInfo createPro(Map<String,Object> map); }
2)然后创建接口的实现类:
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。