使用 MyBatis 和 MySql 以编程方式创建表

2023-11-26

我想创建一种方法来动态创建表,只需将表名作为变量传递即可。 我已经定义了我的 xml 映射器

<mapper namespace="com.mappers.TableCreatorMapper">
    <cache />
    <insert id="createNewTableIfNotExists" parameterType="String" > 
        CREATE TABLE IF NOT EXISTS #{tableName} 
        (
        `ID` varchar(20) NOT NULL,
        PRIMARY KEY (`ID`)
        ) 
        ENGINE=InnoDB
    </insert>
</mapper>

我的 Java 接口映射器很简单:

public interface TableCreatorMapper {
     public void createNewTableIfNotExists(String tableName);
}

但是当我调用我的界面时

tableCreatorMapper.createNewTableIfNotExists("test");

我得到以下异常:

org.springframework.jdbc.BadSqlGrammarException: 
### Error updating database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test' 
        (
        `ID` varchar(20) NOT NULL,
        PRIMARY KEY (`ID`)
' at line 1
### The error may involve com.mappers.TableCreatorMapper.createNewTableIfNotExists-Inline
### The error occurred while setting parameters
### SQL: CREATE TABLE IF NOT EXISTS ?          (         `ID` varchar(20) NOT NULL,         PRIMARY KEY (`ID`)         )    ENGINE=InnoDB
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test' 
        (
        `ID` varchar(20) NOT NULL,
        PRIMARY KEY (`ID`)
' at line 1
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test' 
        (
        `ID` varchar(20) NOT NULL,
        PRIMARY KEY (`ID`)
' at line 1
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:231)
    at org.sp

如果我改为更改查询,为表名添加 ``:

 CREATE TABLE IF NOT EXISTS `#{tableName}`(
        `ID` varchar(20) NOT NULL,
        PRIMARY KEY (`ID`)
        ) 
        ENGINE=InnoDB

I get

### The error occurred while setting parameters
### SQL: CREATE TABLE IF NOT EXISTS `?`(         `ID` varchar(20) NOT NULL,         PRIMARY KEY (`ID`)         )    ENGINE=InnoDB
### Cause: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
; SQL []; Parameter index out of range (1 > number of parameters, which is 0).; nested exception is java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

知道为什么吗?


try

CREATE TABLE IF NOT EXISTS ${_parameter} 
        (
        `ID` varchar(20) NOT NULL,
        PRIMARY KEY (`ID`)
        ) 
        ENGINE=InnoDB

#{name}用于PreparedStatement中的参数(参见字符串替换 in 参数).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 MyBatis 和 MySql 以编程方式创建表 的相关文章

  • 在 Mysql 上使用 EntityManager JPA 运行脚本

    我正在尝试运行脚本 sql 文件 但由于我尝试了多种方法 因此出现多个错误 这是我的主要 sql 脚本 INSERT INTO Unity VALUES 11 paq 0 2013 04 15 11 41 37 Admin Paquete
  • Java:在 eclipse 中导出到 .jar 文件

    我正在尝试将 Eclipse 中的程序导出到 jar 文件 在我的项目中 我添加了一些图片和 PDF s 当我导出到 jar 文件时 似乎只有main已编译并导出 我的意愿是如果可能的话将所有内容导出到 jar 文件 因为这样我想将其转换为
  • Kotlin 未解决的参考:CLI 上 gradle 的 println

    放一个printlnkotlin 函数返回之前的语句会崩溃 堆栈跟踪 thufir dur NetBeansProjects kotlin thufir dur NetBeansProjects kotlin gradle clean bu
  • 如何更新 pl/sql 中嵌套表的列? [复制]

    这个问题在这里已经有答案了 我正在尝试在表中创建一个可以存储多个值的列 如下所示 我有一个学生id std和一个名为marks可以采用几个值 例如2 3 4 我想更新此列表以添加另一个标记2 3 4 5但我不知道怎么做 我如何更新专栏mar
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • 什么时候可以在 Java 中使用 Thead.stop() ?

    Thread stop 的 Java 文档听起来好像如果您调用 Thread stop 世界就会终结 已弃用 这种方法本质上是不安全的 停止线程 Thread stop 导致它解锁所有已锁定的监视器 作为未经检查的 ThreadDeath
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • Jackson XML ArrayList 输出具有两个包装器元素

    我在 Jackson 生成的 XML 输出中得到了两个包装器元素 我只想拥有一个 我有一个 Java bean Entity Table name CITIES JacksonXmlRootElement localName City pu
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • Android:打开和关闭SQLite数据库

    我正在开发Android应用程序 我经常在其中访问本地数据库 该数据库可以从不同的主题访问 因此我遇到了数据库的协调问题 我使用以下open and close method public void open mDb mDbHelper g
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • HashMap 值需要不可变吗?

    我知道 HashMap 中的键需要是不可变的 或者至少确保它们的哈希码 hashCode 不会改变或与另一个具有不同状态的对象发生冲突 但是 HashMap中存储的值是否需要与上面相同 为什么或者为什么不 这个想法是能够改变值 例如在其上调
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • 将 MySQL 结果作为 PHP 数组

    mysql 表 config name config value allow autologin 1 allow md5 0 当前的 php 代码 sth mysql query SELECT rows array while r mysq
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • org.apache.commons.net.io.CopyStreamException:复制时捕获 IOException

    我正在尝试使用以下方法中的代码将在我的服务器中创建的一些文件复制到 FTP 但奇怪的是我随机地低于错误 我无法弄清楚发生了什么 Exception org apache commons net io CopyStreamException
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数

随机推荐

  • 附加到末尾时,python utf-8-sig BOM 位于文件中间

    我最近注意到 Python 在使用以下命令附加到文件时的行为方式并不明显utf 8 sig编码 见下文 gt gt gt import codecs os gt gt gt os path isfile 123 False gt gt gt
  • 我应该如何按索引顺序迭代稀疏数组?

    我有一个稀疏数组 其内容不能保证按索引顺序插入 但需要按索引顺序迭代 要迭代稀疏数组 我知道您需要使用 for in 语句 然而 根据本文 不保证 for in 将以任何特定顺序返回索引 But 像这样的计算器问题建议虽然不能保证对象属性顺
  • 插入标识列的 BCP 格式是什么

    我在尝试使用 BCP 将数据插入表时遇到问题 该表有一个标识列 我正在从文本文件中获取输入 如果有什么好的解决办法请告知 问候 茶颜 我需要做同样的事情 我的同事指出您可以使用 BCP 上的 E 开关来执行此操作 从文档中 E 指定导入的数
  • 在内存警告(Apple 文档缺陷)中卸载 iOS 6 中的视图的正确方法是什么?

    在 iOS 6 中 viewWillUnload and viewDidUnload已弃用 并且 UIViewController 不再卸载内存警告期间屏幕上不可见的视图 这查看控制器编程指南有一个如何手动恢复此行为的示例 这是代码示例 v
  • 如何在 PHP 中正确拆分 PATH 变量?

    我想分开 path getenv PATH 进入其组件 如何以依赖于操作系统的方式确定分隔符 您可以使用PATH SEPARATOR常数 则DIRECTORY SEPARATOR如果需要的话 用于分割路径的常量 看Directory Pre
  • C++ 编译器/链接器是否允许删除未使用的方法?

    C 编译器或链接器 根据任何 C 标准 是否允许删除未使用的方法 编译器似乎可以删除未使用的静态函数 链接器可以删除未使用的函数 但我没有找到类方法的信息 当方法是虚拟的时 这变得非常有趣 Yes 如果该方法未使用 则无法知道它已被删除 因
  • 什么时候真正需要填充共享内存?

    我对 NVidia 的 2 个文档感到困惑 CUDA 最佳实践描述了共享内存是按bank组织的 一般来说在32位模式下每4个字节就是一个bank 我就是这么理解的 然而使用 CUDA 并行前缀和 扫描 详细介绍了由于库冲突而应如何将填充添加
  • NSTimer 无效时不停止

    我的 h 文件中有以下代码 import
  • 为什么大多数 JVM gc 不使用引用计数?

    为什么他们不需要它们 如果有人决定实现使用它们的虚拟机 他们可能会面临什么问题 由于循环引用 引用计数容易出现内存泄漏 想象一下 您有一个简单的 节点 对象 它具有对另一个节点的引用 并假设您将其引用设置为自身 即使全局变量或堆栈变量没有指
  • 使用 .htaccess 删除 .php 扩展名而不破坏 DirectoryIndex

    我在 htaccess 文件中进行了以下重写 从文件中删除了 php 扩展名 例如进行转换so com question php to so com question RewriteEngine On RewriteCond REQUEST
  • 如何从批处理文件中读取注册表字符串值

    我想从bat 文件中读取注册表字符串值 然后将读取器值分配给变量 我尝试了以下操作 FOR a in REG QUERY HKLM SOFTWARE MathWorks MATLAB 7 10 v MATLABROOT DO set MAT
  • 如何将列名作为参数传递给 dplyr 中的函数?

    我想做同样的事情here但有了 dplyr 和多一列 我想通过字符串变量选择一列 但在顶部我还想正常选择第二列 我需要这个 因为我有一个函数可以通过给定的参数选择几列 我有以下代码作为示例 library dplyr data cars x
  • 布局中的 SurfaceView

    所以我做了很多搜索 但似乎仍然找不到 SurfaceView 不显示的确切原因 这是我正在做的事情的一些背景 我有一个水平设置的线性布局 它包含一个 ImageView 然后是一个垂直的 LinearLayout 最后是另一个 ImageV
  • 符合 HTML5 - 类属性中的尾随空格

    我知道从技术上讲 HTML5 是一个 活的规范 但我想知道在类名中包含尾随空格是否符合要求 我在规范中没有看到任何对此场景的引用 但我的一位队友说这是无效的 也许我错过了什么 修剪这些空间会很痛苦 我正在一个大型 Java ecom 应用程
  • 将 Rails 中的主键更改为字符串

    所以我有两个模型 状态和获取 状态 has many 收购 我觉得 51 条记录的自动递增整数主键相当愚蠢 因此 我将 State 的模型更改为 PK State 是两个字母的缩写 我不会在任何地方存储实际的州名称 class State
  • 通过c#获取Outlook电子邮件地址

    我需要能够使用 C 代码获取当前登录用户的电子邮件地址 我需要完整的地址 而不仅仅是假定的电子邮件帐户 例如使用 电子邮件受保护 尽管这适用于大多数客户 任何帮助将不胜感激 试试这个 从http msdn microsoft com en
  • MVC 3 Ajax.ActionLink 与 JQuery UI 确认对话框

    我有一个 Ajax ActionLink 调用删除操作 现在我想使用 JQuery UI 对话框确认而不是 Ajax 链接的常规 确认 属性 我使用不显眼的 javaScript 将事件挂钩到 Ajax ActionLink 但该操作已提交
  • 使用 string.Replace 在 C# 中取消转义字符串?

    我在 checkListBox 中有一个字符串集合 并将该集合转换为List
  • 将三个 js 纹理模型导出为带有 .MTL 文件的 .OBJ

    我希望能够导出 obj 文件 就像本例中一样http trijs org examples webgl exporter obj 但是 我想导出 obj 文件以及 mtl 纹理文件中的相应纹理 我已经看到带有 usemtl someText
  • 使用 MyBatis 和 MySql 以编程方式创建表

    我想创建一种方法来动态创建表 只需将表名作为变量传递即可 我已经定义了我的 xml 映射器