今天做mybatis配置文件,希望通过mybatis方法获得指定表的元数据,在mysql下,使用语句

show columns from user

这样类似的语句,由于表名需要通过参数获取,所以我就写了这么一个配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.wjx.lab.spring.commcrud.dao.CommMapper"><select id="getUserTableColumns"  parameterType="java.lang.String" resultType="map">show columns from #{tableName}</select>
</mapper>

结果呢,就是在执行这个的时候报错。根据日志可以看到这样的字:“show columns from ?”。

现在想来也是经验不足,这个问题当不传递变量,写死语句“show columns from user”时候完全没有问题,当传递参数就出错,应该是参数错了。

最后找到,确实参数错了,因为定义参数类型是String,所有mybatis会替换最终执行的语句是“show columns from ‘user’ ”。这里多了一个引号。

最终没有太好的办法解决,不想改动太大,利用mysql数据库的特点,将这个语句改为了查询information_schema数据库表,也可以达到同样的效果。同时由于那个是标准的sql语句,参数替换完全没有问题。

最终配置文件为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.wjx.lab.spring.commcrud.dao.CommMapper"><select id="getUserTableColumns"  parameterType="java.lang.String" resultType="map">SELECT*FROMinformation_schema.COLUMNSWHERETABLE_SCHEMA = #{tableSchema}ANDTABLE_NAME = #{tabName}</select>
</mapper>

Mybatis + mysql获取元数据时出现问题以及解决相关推荐

  1. mysql 元数据获取_[MySQL] 获取元数据的步骤

    [MySQL] 获取元数据的方法 MySQL提供了以下三种方法用于获取数据库对象的元数据: 1)show语句 2)从INFORMATION_SCHEMA数据库里查询相关表 3)命令行程序,如mysql ...

  2. 元数据--MySQL获取元数据的方法

    元数据:数据的数据,用以描述数据的信息也是数据,被称为元数据 [MySQL]获取元数据的方法 MySQL提供了以下三种方法用于获取数据库对象的元数据: 1)show语句 2)从INFORMATION_ ...

  3. Hive集成Mysql作为元数据时,提示错误:Specified key was too long; max key length is 767 bytes...

    在进行Hive集成Mysql作为元数据过程中.做全然部安装配置工作后.进入到hive模式,运行show databases.运行正常,接着运行show tables:时却报错. 关键错误信息例如以下: ...

  4. Mybatis + Mysql 插入数据时中文乱码问题

    今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱码,一般有两种情况: 数据库本身设置 连接数据库时,jdbc的编码设置 对于第 ...

  5. 使用clickhouse时mysql表引擎从mysql获取数据时时区自动加八小时[已解决]

    今天用clickhouse从mysql中导入数据时忽然发现此问题,之后试验了更改CK时区到上海,更改CK服务器时区到上海,都无济于事. 偶然通过CK命令行查询了一下数据,发现居然时间是对的,才想到应该 ...

  6. MySql 获取年月日 时分秒、年月日、年月、年、月

    -- 当前时间 年-月-日 时:分:秒 select  now(); -- 当前时间 年-月-日 select DATE(CURDATE()); -- 当前时间的 年 指定的月  如下:2020-01 ...

  7. mysql errmsg unknown_详解MySQL Server 启动时出现bug的解决方法

    在用的mysql Server 无法启动.日志如下: 复制代码 代码示例: 130507 12:22:11  mysqld started 130507 12:22:11 [Warning] opti ...

  8. mysql导入数据时 USING BTREE 错误解决办法

    今天在往测试数据库导入数据时,其中一个商品类目表报USING BTREE 错误: You have an error in your SQL syntax; check the manual that ...

  9. 获取cookie时返回RequestsCookieJar的解决方法

    最近在调用第三方登录接口,需要获取接口的set-cookie 用jmeter可以成功返回set-cookie以及location,在用python时却遇到返回的heasers中没有这两个值,于是输出r ...

最新文章

  1. linux小脚本批量添加/删除用户
  2. 基于深度学习的花卉图像关键点检测
  3. 深入分析 Flutter 初始化流程
  4. python requests get请求_python+requests+new——get请求各种情况
  5. ImportError: dynamic module does not define module export function (PyInit__caffe)
  6. A20修改串口设备文件
  7. Espcms 注册或登录提示Can not connect to MySQL server
  8. 《互联网运营智慧》随书视频
  9. Android中汉字转换为拼音
  10. Excel怎么快速制作二维码并保存本地?
  11. 学习3D建模电脑配置要求
  12. EXCEL 在空值中批量填入某个数值
  13. caj转换成word的方法,每天免费使用
  14. 怎么安装光盘并重新启动计算机,如何用光盘重新安装电脑系统
  15. TinyMCE自定义表情包
  16. D语言(Dlang)在单片机(cortex-m)上应用方法
  17. Java将正整数转换为负数,将负整数转换为正数
  18. 第一集 斗罗世界 第六章
  19. 神武4手游等待服务器响应,《神武4》手游快速告别自闭 还能这样玩?
  20. 实验一 利用ffmpeg进行视音频信息提取 |音视频技术

热门文章

  1. 大数据在社会中的重要性
  2. 互联网dns架构实现智能dns实现
  3. LeetCode——110,判断平衡二叉树
  4. 如何设置默认浏览器?快速学会,简单易懂
  5. 基于GIS、、geosever插件实现当地旅游资源网格化管理系统的架构
  6. 关于在VMware上安装Android x86及FTP详细使用
  7. 搞懂质数,质因子,互质,最大公约数,最小公倍数.
  8. WMS系统(一)成品出库
  9. spring boot自动化配置
  10. 用于音频信号去噪的谱相减和陷波滤波的比较(Matlab代码实现)