今天写了一个简单的测试例子,用mybatis实现新建一个MySQL数据表

整体是JavaWeb项目,下面的代码是不完整的。

这是mapper

 1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper
3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5 <mapper namespace="com.reliable.dao.CreateMapper">
6 <update id="createTable3" parameterType="map">
7 CREATE TABLE ${tableName} (
8 field_1 VARCHAR(255) NOT NULL,
9 field_2 VARCHAR(255) NOT NULL
10 )ENGINE=INNODB DEFAULT CHARSET=utf8;
11 </update>
12 </mapper>

测试

public void createTable3Test(ArrayList<String[]> tableInfo) {
String tableName=tableInfo.get(0)[0]+"_state";
Map<String, Object> condition = new HashMap<String, Object>();
condition.put("tableName",tableName);
condition.put("comment_1","字段名");
condition.put("comment_2","字段状态");
System.out.println("第三张表名: "+condition.get("tableName"));
SqlSession sqlSession = MybatisUtils.getSession();
CreateMapper mapper = sqlSession.getMapper(CreateMapper.class);
mapper.createTable3(condition);
sqlSession.close();
}

问题描述

当使用map向mapper传递参数时,在mapper接受这个参数有两种方式:

1、#{  }

2、${  }

这两种方式有显著的区别:

#:默认会给传来的参数加上引号

$:不会给参数加任何东西

打个比方:

像我今天写的例子,如果表名的位置我传递的map的value是---表名1

如果使用#{ } 来接收参数,我的sql语句会变成这样, create table '表名1'  。。。

这样的话这个sql语句是有错误的,运行就会抛出异常

如果我使用${ } 来接收参数,我的sql语句是这样的,create table 表名1 。。。

这时候建表语句是没有问题的。

当参数需要加上引号的时候,用#{}。  

例:select * from xxx  where name= #{name}

SQL:select * from xxx  where name= 'name'

当参数不需要加上引号的时候,用${}

例:select * from xxx order by ${id}

SQL:select * from xxx  order by id

【mybatis踩坑】mybatis获取类型为字符串String的参数自动加引号的更多相关文章

  1. MyBatis踩坑之SQLProvider转义字符被删除问题

    目录 踩坑背景 问题描述 原因追踪 解决方案 方法一 方法二 踩坑背景 项目架构:Spring Boot + MyBatis + MySQL. 使用MyBatis作为ORM框架,jdbc驱动使用的是m ...

  2. OkHttp踩坑记:为何 response.body().string() 只能调用一次?

    想必大家都用过或接触过 OkHttp,我最近在使用 Okhttp 时,就踩到一个坑,在这儿分享出来,以后大家遇到类似问题时就可以绕过去. 只是解决问题是不够的,本文将 侧重从源码角度分析下问题的根本, ...

  3. 对于pycharm和vscode下,从外部复制文本内容为python字符串内容是会自动加\u202a解决办法

    先来看下这个python3源代码,表面上看没有语法毛病,如果源代码字符串内容是手动复制过来的文本内容,在pycharm和vscode下始终提示: pywintypes.error: (2, 'Shel ...

  4. MyBatis踩坑记录

    在线文档: 动态SQL  http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html 1. Error setting null for paramete ...

  5. 转载:mybatis踩坑之——foreach循环嵌套if判断

    转载自:作者:超人有点忙链接:https://www.jianshu.com/p/1ee41604b5da來源:简书 今天在修改别人的代码bug时,有一个需求是在做导出excel功能时,mybatis ...

  6. SpringBoot整合mybatis踩坑

    springboot整合mybaits过程中,调用接口时报错:org.apache.ibatis.binding.BindingException: Invalid bound statement ( ...

  7. 初学者手册-MyBatis踩坑记(org.apache.ibatis.binding.BindingException)

    1.参数绑定失败 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.Bi ...

  8. Java int和integer有什么区别 (mybatis踩坑)

    不要在实体类中使用int 我们都知道Integer是int的包装类,而int是基本数据类型.所以Integer类型的变量会初始化为null,int类型则会被初始化为0 . 所以在下面的动态拼接例子中: ...

  9. 微信小程序踩坑之获取手机号

    最近在开发小程序遇到这样一个问题, 在用户点击授权后去解密手机号时会出现第一次失败,第二次成功的情况.研究了一段时间,终于找到比较合理的解决方案,在此记录并总结一下,希望可以帮助到大家. 需求描述 在 ...

  10. C# Aspose.Words.Document.PageCount 踩坑笔记(获取文档页数)

    事情是这样的,我需要获取Word文档的页数,结果就遇到了这个坑人的问题. var doc = new Aspose.Words.Document(@"相对路径"); doc.Pag ...

随机推荐

  1. win32-FileTimeToSystemTime的使用

    #include <Windows.h> #include <iostream> #include <string> #pragma warning(disable ...

  2. Youpk 脱壳机脱壳原理分析

    Youpk 是一个针对整体加固和Dex抽取加固壳的脱壳机 主要是基于虚拟机的,也就是基于VA的脱壳机, 相对FART出来的更晚一些, 厂商针对少一些, 脱壳位置相对更底层一些,还提供了Dex修复的工具 ...

  3. go语言编程常见问题

    在Goland中运行单元测试报错Error: Cannot find package 如下图,在Goland中运行单元测试时报错:"Error: Cannot find package&qu ...

  4. RK3568开发笔记(三):RK3568虚拟机基础环境搭建之更新源、安装网络工具、串口调试、网络连接、文件传输、安装vscode和samba共享服务

    前言   开始搭建RK3568的基础虚拟机,具备基本的通用功能,主要包含了串口工具minicom,远程登陆ssh,远程传输filezilla,代码编辑工具vscode.   虚拟机   文档对对虚拟机 ...

  5. centos8.x阿里源配置

    >>> cd /etc/yum.repo.d >>> mkdir bak >>> mv *.repo bak/ >>> cd b ...

  6. 第一百零一篇:DOM节点类型

    好家伙,   DOM DOM是javascript操作网页的接口,全称为文档对象模型(Document Object Model).它的作用是将网页转为一个javascript对象, 从而可以使用ja ...

  7. STM32标准库时钟树设置

    STM32的系统时钟大致可以分为以下流程 1.外部晶振提供HSE高速外部时钟信号 2.HSE经过PLL锁相环,倍频后得到PLL_CLK高速内部时钟信号 3.PLL_CLK经过分频后得到系统时钟SYSC ...

  8. PHP项目&变量覆盖&反序列化&未授权访问&身份验证

    CNVD拿1day-验证&未授权-xhcms&Bosscms 此种漏洞由于没有什么关键函数,所以需要通过功能点去进行测试. Bosscms未授权访问 CNVD官网上搜索Bosscms未 ...

  9. Java static关键字的小练习

    1 package com.bytezreo.statictest; 2 3 /** 4 * 5 * @Description static 关键字的使用 小练习 6 * @author Byteze ...

  10. Server-side template injection 模板注入问题总结

    概念: 服务器模板注入(Server-side template injection) 攻击者能够使用本地的模板语法去注入一个恶意的payload,然后在服务器端执行该攻击,当与欧股直接输入数据到模板 ...