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


    
        
        远程通信自检

        
    
    
    
表名: 列名:
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 ALTER TABLE ${tableName} ADD ( ${lieName} VARCHAR (30) )

上面是一个简单的操作,给数据表添加列一个列名

如果要给添加的列设置属性用 map集合

 

Dao
    void appendTableColumn(@Param("tableName") String tableName, @Param("column") Map column);
SQLMapper
    
    ALTER TABLE ${tableName}
    ADD (
    "${column.code}"
    
        
            VARCHAR2(${column.length} BYTE) NULL
        
        
            NUMBER(${column.length},${column.precision}) NULL
        
        
            TIMESTAMP(${column.length}) NULL
        
    
    )

需要注意的是

MyBatis执行DDL:对数据表中列的添加,修改,删除操作_第1张图片 

这里只能用${},不能用#{},不然会报错

因为使用#{},编译后会加上单引号' ' ,但是在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  新列名

 

 

 

 

你可能感兴趣的:(mybatis,sql)