一个简单的demo。用户在前台页面表单输入数据表的信息,数据传递到后台,系统自动在后台创建数据库表(table)的功能。
作为简单demo,这里的表只有“表名”,“列名”,“数据类型”,“数据长度”四种信息。在后台“数据库表”封装成“Table”对象,表中的每一字段“列”封装成“Line”对象。后台java代码如下所示
// 数据库表对象,其中成员包含Line类型的数组变量
public class Table {
// 表名
private String tableName;
// 所有字段信息,列
private Line[] lines;
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public Line[] getLines() {
return lines;
}
public void setLines(Line[] lines) {
this.lines = lines;
}
@Override
public String toString() {
return "Table{" +
"tableName='" + tableName + '\'' +
", lines=" + Arrays.toString(lines) +
'}';
}
}
// 字段,列
public class Line {
// 字段名,列名
private String lineName;
// 数据类型
private String dataType;
// 数据长度
private String dataLength;
public String getLineName() {
return lineName;
}
public void setLineName(String lineName) {
this.lineName = lineName;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getDataLength() {
return dataLength;
}
public void setDataLength(String dataLength) {
this.dataLength = dataLength;
}
@Override
public String toString() {
return "Line{" +
"lineName='" + lineName + '\'' +
", dataType='" + dataType + '\'' +
", dataLength='" + dataLength + '\'' +
'}';
}
}
用户在前台表单输入数据库表的相关信息,点击Creat Table按钮调用前台JavaScript函数传输数据
JavaScript代码
// 获取表名
function getTableName() {
var table = $("#tableName").val();
return table;
}
// 获取字段,列数据
function getLines() {
var lines = new Array();
for(var i = 0; i <= LineCont; i++) {
var line = new Object();
line.lineName = $("#line" + i + " " + "#lineName").val();
line.dataType = $("#line" + i + " " + "#dataType").val();
line.dataLength = $("#line" + i + " " + "#dataLength").val();
lines.push(line);
}
return lines;
}
// 传输数据
function creatTable() {
var tableName = getTableName();
var lines = getLines();
$.ajax({
url:"creatTableAction",
type:"post",
data:JSON.stringify({
tableName:tableName,
lines:lines}),
contentType: "application/json;charset=UTF-8",
dataType:"json",
success:function (data) {
if (data.result) {
}
}
});
}
后台接收代码,我使用的是Spring + SpringMVC框架
@Controller
public class MysqlController {
@RequestMapping("/creatTableAction")
@ResponseBody
public Map creatTable(@RequestBody Table table) {
System.out.println(table.toString());
Map resultMap = new HashMap();
return resultMap;
}
}
控制台toString()打印数据
Table{
tableName='user',
lines=[Line{lineName='userName', dataType='VARCHAR', dataLength='20'},
Line{lineName='userId', dataType='VARCHAR', dataLength='20'},
Line{lineName='gender', dataType='CHAR', dataLength='1'},
Line{lineName='address', dataType='VARCHAR', dataLength='60'}]
}
可见包含对象数组的json数据已经被成功接收到了