栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis动态创建表格,并且复制数据

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis动态创建表格,并且复制数据

MyBatis动态创建表格,并且复制数据 一 业务要求

老师交代任务,数据库有一张表,现在需要前端页面在条件搜索下得到的数据,保存在另一张表中,这表是动态生成的,但是新表的结构和源表结构一样,项目框架使用的MyBatis,这里面有两个操作:

  1. 动态生成表
  2. 复制条件查询的数据到新表中
  3. 检验新表生成是否重复
二 代码实现

1.通过MyBatis插件生成DAO层,XML,POJO类

2.检验该动态是否存在,如果存在,会删除,重新建的

 
        select count(*) from information_schema.TABLES where table_name = #{tableName}
    

3.动态生成表格


      create table ${tableName} like t_imsirpt;
    

4.复制数据

 
        insert into ${tableName}
        select * from t_imsirpt i
        where 1=1
        
            and devid in
            
                #{item}
            
        
        
            and imsi like "%"#{imsi}"%"
        
        
            and isdn like "%"#{isdn}"%"
        
        
            =  #{beginTime}  ]]>
        
        
            
        
    

5.DAO层接口

 //检查表是否存在
    int isTableExist(@Param("tableName") String tableName);

    //动态创建表格
    int addNewTable(@Param("tableName") String tableName);

    //复制数据
    int copyOf(@Param("tableName") String tableName,
               @Param("devices") String[] devices,
               @Param("beginTime") Date beginTime,
               @Param("endTime") Date endTime,
               @Param("imsi") Long imsi,
               @Param("isdn") String isdn);
总结

1.这只是应对两个不同表但是数据结构是一样,其实不一样,原理也是一样
2.数据量过大的时候,建议合并添加和复制两个语句,可提高效率,但是校验一层就不存在了
3.表明不能重复,一旦重复,上次查询的结果就会被覆盖

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/345141.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号