Mybatis如何動態(tài)創(chuàng)建表
背景
項目中涉及存儲數據量過大,會導致數據讀取慢等問題,所以考慮動態(tài)創(chuàng)建表來存儲數據。
↓
這里場景動態(tài)創(chuàng)建表,而且字段是不固定的。表名和字段對應關系存儲在單張表中!
解釋
創(chuàng)建表涉及到數據類型、存儲長度等,這里可以根據個人業(yè)務設置、或者固定
使用Mybatis 動態(tài)sql,傳入對應的數據類型來實現動態(tài)創(chuàng)建表
注意點:
這里簡單說下表名、字段等規(guī)范
- 1.因為我這里表名也是動態(tài)生成,不建議純數字,否者插入時,表名需添加~~(Table鍵上面),可以拼接字符前綴
- 2.建表時建議采用innodb引擎,一般情況。
- 3.數據類型的話,根據業(yè)務場景來,我這里就是int、varchar、datetime三種類型
具體實現
1、拼接每個字段對應數據類型、長度、默認值等
對應數據也可以全varchar,根據業(yè)務需求
for (TemplateField field : fields) { TableParam tableParam2 = new TableParam(); tableParam2.setField(field.getDataIndex()) .setContent(field.getTitle()); if ("1".equals(field.getDataType())) { tableParam2.setType(" varchar(255) ") .setAttribute(" CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL "); } if ("2".equals(field.getDataType())) { tableParam2.setType(" int(10) ") .setAttribute(" NULL DEFAULT NULL "); } if ("3".equals(field.getDataType())) { tableParam2.setType(" datetime(0) ") .setAttribute(" NULL DEFAULT NULL "); } tableParamList.add(tableParam2); }
2、對應mapper,sql語句
<!--創(chuàng)建表--> <update id="createTable" parameterType="java.util.List" statementType="STATEMENT"> CREATE TABLE `${tableName}` ( <foreach collection="tableParams" separator="," item="item"> `${item.field}` ${item.type} ${item.attribute} COMMENT '${item.content}' </foreach> ${key} ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '模板對應數據填報表' ROW_FORMAT = Dynamic; </update>
到此,Mybatis動態(tài)創(chuàng)建表就可以了!
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java中stream處理中map與flatMap的比較和使用案例
這篇文章主要介紹了Java中stream處理中map與flatMap的比較和使用案例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03Springboot從配置文件properties讀取字符串亂碼的解決
這篇文章主要介紹了Springboot從配置文件properties讀取字符串亂碼的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Spring cloud 查詢返回廣告創(chuàng)意實例代碼
在本篇文章里小編給大家整理的是關于Spring cloud 查詢返回廣告創(chuàng)意實例代碼,需要的朋友們可以跟著學習下。2019-08-08關于在Springboot中集成unihttp后應用無法啟動的解決辦法
本文主要介紹了在SpringBoot項目中集成UniHttp框架時遇到的無法啟動問題,并提供了解決方法,作者通過詳細記錄和分析問題,希望為其他開發(fā)者提供有價值的參考和借鑒,感興趣的朋友跟隨小編一起看看吧2025-03-03