<html lang="en">
<head>
<meta charset="utf-8">
<title>远程通信自检</title>
<script type="text/javascript" src="jquery-1.11.0.js"></script>
</head>
<body>
<div>
<div>
表名: <input type="text" id="tableName">
列名: <input type="text" id="lieName">
<button type="button" id="yes" onclick="updateSql()">确认</button>
</div>
</body>
</html>
<script type="text/javascript">
function updateSql() {
var tableName = $("#tableName").val();
var colunName = $("#lieName").val();
alert(tableName+" "+colunName);
$.ajax({
type: "post",
dataType: "json",
url: path + "/remes/updateSql.do",
data: {tableName:tableName,colunName:colunName},
success: function (data) {
alert(data.msg);
}
})
}
</script>
Controller
@Autowired
private RemesService remesService;
@RequestMapping("/updateSql.do")
@ResponseBody
public ReturnResult updateSql(String tableName,String colunName) throws Exception {
System.out.println("controller "+tableName+" "+colunName);
remesService.updateSql(tableName,colunName);
return returnData(0, "结束", "");
}
Service
int updateSql(String tableName, String lieName);
impl
@Autowired
private SysConfigDao sysConfigDao;
@Override
public int updateSql(String tableName, String colunName) {
System.out.println("impl "+tableName+" "+colunName);
return sysConfigDao.updateSql(tableName, colunName);
}
Dao
int updateSql(@Param("tableName")String tableName, @Param("lieName")String lieName);
SQLMapper
<update id="updateSql" parameterType="String">
ALTER TABLE ${tableName}
ADD (
${lieName}
VARCHAR (30)
)
</update>
上面是一个简单的操作,给数据表添加列一个列名
如果要给添加的列设置属性用 map集合
Dao
void appendTableColumn(@Param("tableName") String tableName, @Param("column") Map<String, String> column);
SQLMapper
<update id="appendTableColumn" parameterType="java.util.Map">
ALTER TABLE ${tableName}
ADD (
"${column.code}"
<choose>
<when test="column.type=='STRING'">
VARCHAR2(${column.length} BYTE) NULL
</when>
<when test="column.type=='NUMBER'">
NUMBER(${column.length},${column.precision}) NULL
</when>
<otherwise>
TIMESTAMP(${column.length}) NULL
</otherwise>
</choose>
)
</update>
需要注意的是
这里只能用${},不能用#{},不然会报错
因为使用#{},编译后会加上单引号' ' ,但是在sql语句中我们编写表的列时没有引号
ALTER TABLE table_name ADD column_name datatype
所以这里用${};
当你使用条件参数时因为sql语句要加单引号' ',所以你用#{}会更方便也更安全
修改一个表的列名
SQL Server修改列名和列类型
EXEC sp_rename '表名.[字段旧名]', '字段新名' , 'COLUMN'; //修改列名
alter table 表名 alter column 字段名 decimal(18, 2) null;//修改列类型
Oracle 修改列名
alter table 表名 rename column 现列名 to 新列名;
MySQL 修改字段
//修改一个字段的类型
alter table user MODIFY new1 VARCHAR(10);
//修改一个字段的名称,此时一定要重新指定该字段的类型
alter table user CHANGE new1 new4 int;
删除一个表的某一列
ALTER TABLE 表名 DROP COLUMN 新列名