【mybatis踩坑】mybatis获取类型为字符串String的参数自动加引号

今天写了一个简单的测试例子,用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

posted @   靠谱杨  阅读(2324)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2020-11-22 JDBC补充知识

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示