MyBatis中 #和$的区别

MyBatis 专栏收录该内容
6 篇文章 0 订阅

$符号的用法

场景:用户数据特别多,需要把用户数据分表存储,user1表和user2表;查询表中的信息,有时需要从user1表中查,有时需要从user2表中查,现在想用一个方法完成。

在UserMapper接口中增加一个根据表名查询用户的方法:

/**
     * 根据表名查询用户信息
     * @param tableName
     * @return
     */
    public List<User> findUserByTableName(@Param("tableName") String tableName);

在UserMapper.xml中增加一条sql语句:

<select id="findUserByTableName" resultType="User">
        select * from #{tableName}
    </select>

测试的时候,发现报错:
这里写图片描述

需要改成${}来接收参数, 非预编译的方式来接收参数

<select id="findUserByTableName" resultType="User">
        select * from ${tableName}
</select>

总结:

“#”和”$”的区别:
1、#是预编译的方式,\$是直接拼接;

2、#不需要关注数据类型,mybatis实现自动数据类型转换;$不做数据类型转换,需要自行判断数据类型;
3、#可以防止sql注入;$不能防止sql注入;
4、如果只有一个参数,默认情况下,#{}中可以写任意的名字;${}中只能用value来接收。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值