mybatis 操作 mysql 动态创建数据表
Map 数据一般是根据需求生成的,例如 map.put("ticketId",176),map.put("ticketName","测试工单")
这样遍历处理的 Map 生成的表包含的字段:id ticket_id ticket_name
//动态创建数据表,由于数据表字段是下划线,所以要把驼峰的 map 中的 key 先转为下划线
HashMap<String, Object> transitionMap = humpToUnderline(ticketIdAndRemark.get(0));
StringBuilder stringBuilderHashKey = new StringBuilder();
// 获取 key
for (HashMap.Entry<String, Object> entry : transitionMap.entrySet()) {
if (entry.getKey().contains("remark")) {
stringBuilderHashKey.append("`").append(entry.getKey()).append("`").append("longtext DEFAULT NULL").append(",");
} else {
stringBuilderHashKey.append("`").append(entry.getKey()).append("`").append("varchar(200) DEFAULT NULL").append(",");
}
}
String tableString = stringBuilderHashKey.toString();
//判断表是否存在,存在:先删除在创建,不存在:创建表
int count = reportAllSqlMapper.existTable(tableName);
if (0 != count) {
//TODO 不一定要截断表,目前是截断。考虑点:表数据不截断就会太大了。到时候只能分批处理,或者按时间处理
reportAllSqlMapper.dropTable(tableName);
}
reportAllSqlMapper.createTable(tableName, tableString);
/**
* 把 map 中的 key 由驼峰命名转为下划线
*/
public HashMap<String, Object> humpToUnderline(HashMap<String, Object> map) {
HashMap<String, Object> transitionMap = new HashMap<>(16);
map.forEach((k, v) -> transitionMap.put(StrUtil.toUnderlineCase(k), v));
return transitionMap;
}
mybatis 操作 mysql 动态创建数据表的更多相关文章
- MySQL在创建数据表的时候创建索引
转载:http://www.baike369.com/content/?id=5478 MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可以直接创建索引.基本的语法格式如下: CRE ...
- mybatis 操作其他数据库的数据表
配置文件里面配置的数据库只是默认数据库,并不是只能操作默认数据库.(被自己蠢死了,唉) 1. 注解方式 使用BaseMapper方式操作数据表时,在表对应的实体类上的 @table 注解描述表名时加上 ...
- laravel在控制器中动态创建数据表
Schema::connection('usertable')->create('test', function ($table) { $table->increments('id'); ...
- python + mysql 实现创建数据表
import pymysql"""1.连接本地数据库2.建立游标3.创建表4.插入表数据.查询表数据.更新表数据.删除表数据"""def c ...
- JSF dataTable 添加列 动态创建数据表 列
@Named @ViewScoped public class LiveRangeService implements Serializable { private List< Map<S ...
- SpringBoot+Mybatis 自动创建数据表(适用mysql)
Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样 ...
- 《MySQL数据操作与查询》- 返校复习课练习题,创建数据库user_system,创建数据表user及user_ext
一.其它(共18题,100分) 1.创建数据库user_system CREATE DATABASE user_system 2.在数据库user_system中创建数据表user及user_ext, ...
- MySQL创建数据表
* 创建数据表 * * * 一.什么是数据表 * * * * 二.创建数据表的SQL语句模型 * * DDL * * ...
- MySQL 创建数据表
MySQL 创建数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (col ...
- MySQL学习笔记_4_MySQL创建数据表(下)
MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines ...
随机推荐
- SkipList原理与实现
机制 链表中查询的效率的复杂度是O(n), 有没有办法提升这个查询复杂度呢? 最简单的想法就是在原始的链表上构建多层索引. 在level 1(最底层为0), 每2位插入一个索引, 查询复杂度便是 O( ...
- Cilium系列-4-Cilium本地路由
系列文章 Cilium 系列文章 前言 在前文中我们提到, cilium install 默认安装后, Cilium 功能启用和禁用情况如下: datapath mode: tunnel: 因为兼容性 ...
- 如何使用iptables防火墙模拟远程服务超时
前言 超时,应该是程序员很不爱处理的一种状态.当我们调用某服务.某个中间件.db时,希望对方能快速回复,正确就正常,错误就错误,而不是一直不回复.目前在后端领域来说,如java领域,调用服务时以同步阻 ...
- 查看UUID
查看硬盘UUID: 1. ls -l /dev/disk/by-uuid 2. blkid /dev/sda5 修改硬盘UUID: 1.新建和改变分区的UUID sudo uuidgen | xarg ...
- 从 Pulsar Client 的原理到它的监控面板
背景 前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了.生产者消息发送缓慢等各种问题. 虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,比如速率.流量.消 ...
- CodeForces CF1846G 题解
CodeForces CF1846G 题解 CodeForces题目链接 洛谷题目链接 标准答案是状压之后,转化成Dijkstra算法跑最短路.我这里提供一个不一样的思路. 题意简述 主人公得了病,有 ...
- Hutool:一行代码搞定数据脱敏
1. 什么是数据脱敏 1.1 数据脱敏的定义 数据脱敏百度百科中是这样定义的: 数据脱敏,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护.这样就可以在开发.测试和其它非生产环境 ...
- docker网络 bridge 与overlay 模式
转载请注明出处: 1.bridge网络模式 工作原理: 在Bridge模式中,Docker通过创建一个虚拟网络桥接器(bridge)将容器连接到主机上的物理网络接口.每个容器都会被分配一个IP地址, ...
- 原生CSS嵌套简介
嵌套是使用Sass等CSS预处理器的核心原因之一.现在,该功能已经以类似的语法出现在标准浏览器CSS中.你能否在构建系统时放弃对预处理器的依赖? CSS嵌套可以节省输入时间,并使语法更易于阅读和维护. ...
- Spring Cloud OpenFeign 的使用及踩坑指南
目录 Feign 和OpenFeign Feign OpenFeign openFeign的优势 OpenFeign应用 1. 导入依赖 2. 使用 3. 日志配置 4. 数据压缩 OpenFeign ...