前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MySQL #{驼峰字段} for MyBatis

MySQL #{驼峰字段} for MyBatis

作者头像
林万程
发布于 2018-08-02 07:46:13
发布于 2018-08-02 07:46:13
4.9K00
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查找在那个表并生成 字段名 SQL
SELECT TABLE_SCHEMA, TABLE_NAME, concat('SELECT ',
  group_concat(COLUMN_NAME ORDER BY ORDINAL_POSITION SEPARATOR ', ' )
  , ' FROM ' , TABLE_SCHEMA, '.', TABLE_NAME, ';') AS SQLStr
FROM information_schema.COLUMNS WHERE 1=1
AND TABLE_NAME like 'job_depend' GROUP BY TABLE_SCHEMA, TABLE_NAME ORDER BY length(TABLE_SCHEMA);

# #{驼峰字段} (创建存储函数snakeToCamel后使用)
SELECT TABLE_SCHEMA, TABLE_NAME,
  snakeToCamel(group_concat(concat('#{',COLUMN_NAME,'}')
  ORDER BY ORDINAL_POSITION SEPARATOR ', ')) AS COLUMN_NAMES
FROM information_schema.COLUMNS WHERE 1=1
AND TABLE_NAME like 'job_depend' GROUP BY TABLE_SCHEMA, TABLE_NAME;

# 字段名=#{驼峰字段} SQL (创建存储函数snakeToCamel后使用)
SELECT TABLE_SCHEMA, TABLE_NAME, concat('UPDATE ', TABLE_NAME, ' SET\n',
  group_concat(concat('  ', COLUMN_NAME,' = #{',snakeToCamel(COLUMN_NAME),'}')
  ORDER BY ORDINAL_POSITION SEPARATOR ',\n')
  , '\nWHERE col=val;')AS SQLStr
FROM information_schema.COLUMNS WHERE 1=1
AND TABLE_NAME like 'job_depend' GROUP BY TABLE_SCHEMA, TABLE_NAME;

# 字段注释
SELECT TABLE_SCHEMA, TABLE_NAME,
  group_concat(CASE COLUMN_COMMENT
               WHEN '' THEN COLUMN_NAME
               ELSE COLUMN_COMMENT END
  ORDER BY ORDINAL_POSITION SEPARATOR ', ' ) AS COLUMN_NAMES
FROM information_schema.COLUMNS WHERE 1=1
AND TABLE_NAME like 'job_depend' GROUP BY TABLE_SCHEMA, TABLE_NAME;

# 查找在那个表并生成 字段名 AS 注释 SQL
SELECT TABLE_SCHEMA, TABLE_NAME,
  concat('SELECT ',group_concat(
    CASE COLUMN_COMMENT
    WHEN '' THEN COLUMN_NAME
    ELSE concat_ws(' AS ', COLUMN_NAME, COLUMN_COMMENT)
    END
  ORDER BY ORDINAL_POSITION SEPARATOR ', ')
  , ' FROM ' , TABLE_SCHEMA, '.', TABLE_NAME, ';') AS SQLStr
FROM information_schema.COLUMNS WHERE 1=1
AND TABLE_NAME like 'job_depend' GROUP BY TABLE_SCHEMA, TABLE_NAME;

# 打开 MySQL8 默认关闭的创建存储函数开关
SET GLOBAL log_bin_trust_function_creators = 1;
# 若存储过程存在则删除
DROP FUNCTION IF EXISTS snakeToCamel;
# 创建一个存储函数
CREATE FUNCTION snakeToCamel(snakeString VARCHAR(16383))
  # 返回值类型
  RETURNS VARCHAR(16383)
  # 开始内容
  BEGIN
    set snakeString = replace(snakeString, '_a', 'A');
    set snakeString = replace(snakeString, '_b', 'B');
    set snakeString = replace(snakeString, '_c', 'C');
    set snakeString = replace(snakeString, '_d', 'D');
    set snakeString = replace(snakeString, '_e', 'E');
    set snakeString = replace(snakeString, '_f', 'F');
    set snakeString = replace(snakeString, '_g', 'G');
    set snakeString = replace(snakeString, '_h', 'H');
    set snakeString = replace(snakeString, '_i', 'I');
    set snakeString = replace(snakeString, '_j', 'J');
    set snakeString = replace(snakeString, '_k', 'K');
    set snakeString = replace(snakeString, '_l', 'L');
    set snakeString = replace(snakeString, '_m', 'M');
    set snakeString = replace(snakeString, '_n', 'N');
    set snakeString = replace(snakeString, '_o', 'O');
    set snakeString = replace(snakeString, '_p', 'P');
    set snakeString = replace(snakeString, '_q', 'Q');
    set snakeString = replace(snakeString, '_r', 'R');
    set snakeString = replace(snakeString, '_s', 'S');
    set snakeString = replace(snakeString, '_t', 'T');
    set snakeString = replace(snakeString, '_u', 'U');
    set snakeString = replace(snakeString, '_v', 'V');
    set snakeString = replace(snakeString, '_w', 'W');
    set snakeString = replace(snakeString, '_x', 'X');
    set snakeString = replace(snakeString, '_y', 'Y');
    set snakeString = replace(snakeString, '_z', 'Z');
    set snakeString = replace(snakeString, '_', '');
    RETURN snakeString;
  END;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.07.31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SQL注入的基本步骤
​ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='sql'--+
行云博客
2020/07/29
1K0
sql注入入门学习(数字型)(连载中)
在MySQL中,表名存放在information_schema数据库下tables表table_name字段中、查表名我们主要用到的是TABLES表
一个淡定的打工菜鸟
2018/12/27
4820
数据库的一些注入技巧-mysql
SELECT 1 FROM dualWHERE 1 = '1'''''''''''''UNION SELECT '2';
Jumbo
2019/11/05
9210
使用shell脚本生成数据库markdown文档
学习shell脚本编程的一次实践,通过shell脚本生成数据库的markdown文档,代码如下:
代码改变世界-coding
2018/09/27
9030
SQL之mysql到hive批量生成建表语句
数据采集时如果使用datax的话,必须先手工建好表之后才能进行数据采集;使用sqoop的话虽然可以默认建表,但是每次还要手工配置命令。表数量不多的话还好,如果多库多表需要批量采集的话工作量会很大,因此需要一个批量生成建表语句的功能来节省人力。
chimchim
2022/11/13
2.1K0
mysql的information_schema下的COLUMNS表详解
`information_schema.COLUMNS` 表是 MySQL 中的一个元数据表,用于存储数据库中所有表的列信息。这个表对于查询和管理数据库结构非常有用,可以帮助您了解每个表中的列定义、数据类型、约束等细节。
jack.yang
2025/04/05
590
ruoyi mysql切换 pgsql
pgsql information_schema.tables 不会存储表的创建时间或更新时间 所以关于根据时间查询的条件需要删除
IT小马哥
2025/03/26
600
故障分析 | MySQL 扩展 VARCHAR 长度遭遇问题的总结
经过排查分析得出,这是由于改表系统解析改表需求得出错误的改表方案导致,即这类改表可以满足快速改表操作(直接使用 ALTER TABLE),理论上任务下发后能马上改完,但是工单结果是执行触发 10 秒超时,最终工单失败。
爱可生开源社区
2024/01/31
3500
故障分析 | MySQL 扩展 VARCHAR 长度遭遇问题的总结
MySQL用注释当表头
用中文注释当查询结果的表头 效果展示 # 若存储过程存在则删除 DROP PROCEDURE IF EXISTS sel; # 创建一个存储过程 CREATE PROCEDURE sel(db VAR
林万程
2018/06/27
2.7K0
WEB 安全学习 一、mysql 注入漏洞
转载: https://www.cnblogs.com/cui0x01/p/8620524.html
梅花
2020/09/28
8720
WEB 安全学习 一、mysql 注入漏洞
Mysql中索引和约束相关
自增 导出创建自增字段的语句 SELECT CONCAT( 'ALTER TABLE `', TABLE_NAME, '` ', 'MODIFY COLUMN `', COLUMN_NAME, '` ', IF(UPPER(DATA_TYPE) = 'INT', REPLACE( SUBSTRING_INDEX( UPPER(COLUMN_TYPE), ')', 1 ), 'INT', 'INTEGER' ), UPPER(COLUMN_TYPE) ), ') UNSIGNED NOT NULL AUTO_
码客说
2020/12/28
7480
SQL注入 安全狗apache3.5.12048版本绕过
没错,这次我们又来了,还是那条狗,绕过的是安全狗apache3.5.12048版本,个人感觉这个狗比上次的那个有难度些。上次发的文章里面没安全狗的文件,因为当时安装之后文件就删了,这次有,后台回复关键字:
乌鸦安全
2021/08/05
5600
SQL注入 安全狗apache3.5.12048版本绕过
WEB安全基础 - - -SQL注入利用
 报错为:Unknown column '5' in 'order clause' 
干掉芹菜
2022/11/19
5030
WEB安全基础 - - -SQL注入利用
Java代码生成器原理和编写
这里给大家提供些简单易于操作的思路,我们找到数据库连接中的information_schema这个库,这个库就是元数据库,保存着其他库以及库表的信息,并且一直维护.
全栈程序员站长
2022/08/20
9740
Java代码生成器原理和编写
SQL快速获取 – 逻辑模型清单
我们有需求:将PDManer文件中的”数据表”生成”逻辑模型清单”,很显然,PDManer是没有”逻辑模型清单”这个功能的。项目急,任务重,我们不得不找一些快速解决方案,代替我们人工复制粘贴逻辑模型清单的内容。
收心
2023/06/14
5970
SQL快速获取 – 逻辑模型清单
go模板-代码生成器
能用程序去做的事,就不要用手,编写自己的代码生成器就是用来解放你的双手,替你做一些重复性的工作。 上篇帖子写了模板的基础 go模板详说 ,有了基础就要做点什么东西,把所学到的东西应用起来才能更好的进步。于是用模板写了一个代码生成器,用于把数据库的表转换成go的struct,目前支持MySQL和PostgreSQL。这篇帖子写实现的思路和一些具体的代码实现。 Github地址: yggdrasill 看一下效果
lpxxn
2020/05/29
1.1K0
MySQL常用表结构查询语句
在我们使用数MySQL据库进行查询或者建表时,经常需要查看表结构,下面以employees数据库中的departments表为例进行表结构查询:
星哥玩云
2022/08/17
6.3K0
查询 MySQL 字段注释的 5 种方法!
很多场景下,我们需要查看 MySQL 中表注释,或者是某张表下所有字段的注释,所以本文就来盘点和对比一下查询注释的几种方式。
磊哥
2022/05/09
5.5K0
查询 MySQL 字段注释的 5 种方法!
sqli-labs练习(第一关)——字符型
首先,进入靶场 1、判断是数字型还是字符型 在url后面分别添加?id=1, ?id=2, ?id=2-1 ,观察页面的变化,判断是字符型还是数字型。 (如果id=2-1 与 id=1的页面一样,就
宸寰客
2020/07/20
6030
sqli-labs练习(第一关)——字符型
安全笔记
CONCAT()函数用于将多个字符串连接成一个字符串。 使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为
XRSec
2022/02/13
3510
相关推荐
SQL注入的基本步骤
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验