mybatis对数据库的操作,删除表,新建表,修改表。

mybatis对数据库操作

事情是这样的,今天一不小心接到一个这样的需求,调用远程接口获取数据,每周定时更新全部数据,这不挺好整的嘛!!!!!!!!!
但是,更新之前需要把之前的那个表的数据做备份,把新获取的数据重新创建一张表,插入到新新建的这张表中,后续更新的话就需要把之前备份的那张表删除,把当前的表备份,在次创建新表存数据。我懵逼了。不过下来想想也还好啦。。。。。

假设表结构是这样的
newTable(创建的新表,存取当天获取的新数据)–>tableBack(备份表,上次获取数据)
就这样搞。
实操:哈哈哈哈哈


1.首先是接口层哈,在获取数据后你首先得判断数据库是否存在备份表吧,那就来判断下吧。

    /**
     * 查询表是否存在tableBack
     * */
    @Select("select count(*) from information_schema.TABLES where table_name=#{tableName}")
    int isExistTable(@Param("tableName")String tableName);//tableName=tableBack

2.如果存在的话是不是要删除呢?对吧

    /**
     * 删除表(不能防止sql注入)
     * */
    @Update("DROP TABLE IF EXISTS ${tableName}")
    int deleteTable(@Param("tableName")String tableName);

注意哦!mybatis中的 #{} 和 ${} 的区别哦,#{}可以进行SQL的预编译,但是 ${}是不行的呢。
此处要进行删除表的操作就得使用第二个拿到传入表名,因为使用#{}进行操作会报错的。

3.接下来是不是得判断有没有newtable吧!看下面

    /**
     * 查询表是否存在newtable
     * */
    @Select("select count(*) from information_schema.TABLES where table_name=#{tableName}")
    int isExistTable(@Param("tableName")String tableName);//tableName=newtable

4.如果有的话是不是得把newtable的表名修改成tableBack,没问题吧!

    /**
     * 通用但是不能防止sql注入
     * */
    @Update("ALTER  TABLE ${tableName} RENAME TO ${newTableName}")
    void renameTestTableName(String tableName,String newTableName);
    //参数tableName=newtable,newTableName=tableBack

5.修改名字后,是不是数据库就只存在一张表叫做tableBack呢。现在我们就要创建一张表叫做newtable吧!

 @Update("CREATE TABLE ${tableName} (\n" +
            "  `id` varchar(36) NOT NULL COMMENT 'uuid',\n" +
            "  `name` varchar(255) DEFAULT NULL COMMENT '名字',\n" +
            "  `age` varchar(255) DEFAULT NULL COMMENT '年龄',\n" +
            "  `sex` varchar(255) DEFAULT NULL COMMENT '公母',\n" +
            "  PRIMARY KEY (`id`)\n" +
            ") ENGINE=InnoDB DEFAULT CHARSET=utf8;")
    int createMainTable(String tableName);//  tableName=newtable

6.向数据库插入数据

    @Insert("<script>" +
            "insert into(name,age,sex) " +
            "values" +
            "<foreach collection =\"list\" item=\"ll\" separator =\",\">\n" +
            "(#{ll.name},#{ll.age),#{ll.sex}" &
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值