IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> MyBatis动态创建表格,并且复制数据 -> 正文阅读

[Java知识库]MyBatis动态创建表格,并且复制数据

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

一 业务要求

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

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

二 代码实现

1.通过MyBatis插件生成DAO层,XML,POJO类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vgx3rZuf-1634999226898)(https://uploadfiles.nowcoder.com/images/20200528/653018440_1590680360756_5A926F80CDA25BE173E28EF90D778758 "图片标题")]

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

 <select id="isTableExist" parameterType="java.lang.String" resultType="java.lang.Integer">
        select count(*) from information_schema.TABLES where table_name = #{tableName}
    </select>

3.动态生成表格

<update id="addNewTable">
      create table ${tableName} like t_imsirpt;
    </update>

4.复制数据

 <insert id="copyOf" parameterType="com.nkr.ndp.dao.bean.TImsirpt">
        insert into ${tableName}
        select * from t_imsirpt i
        where 1=1
        <if test="devices !=null and  devices.length > 0">
            and devid in
            <foreach collection="devices" item="item" index="index"
                     open="(" close=")" separator=",">
                #{item}
            </foreach>
        </if>
        <if test=" imsi!=null and imsi!=0L">
            and imsi like "%"#{imsi}"%"
        </if>
        <if test=" isdn!=null and isdn!=&#39;&#39; ">
            and isdn like "%"#{isdn}"%"
        </if>
        <if test="beginTime !=null ">
            <![CDATA[ and time  >=  #{beginTime}  ]]>
        </if>
        <if test="endTime !=null ">
            <![CDATA[ and time <  #{endTime}  ]]>
        </if>
    </insert>

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.表明不能重复,一旦重复,上次查询的结果就会被覆盖

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-24 14:48:21  更:2021-10-24 14:49:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:23:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码