MyBatis执行DDL:对数据表中列的添加,修改,删除操作

<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  新列名

 

 

 

 

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值