MyBatis小插曲:# { } 和 $ { } 的区别
创始人
2025-05-28 23:58:43

在使用mybatis的时候我们会使用到 # { } 和 $ { } 这两个符号来为sql语句传参数

而这两个 符号有什么区别呢?

  • #{ } :是预编译处理,是占位符

  • ${ }:是字符串替换,是拼接符

日志分析:

我们通过打印日志进行观察:

使用#{}的情况:

使用${}的情况:

在这里我们可以观察到 使用#{}的时候是先使用? 进行占位,然后调用PreparedStatement来赋值。

而使用${}的时候是直接进行替换操作

实践场景区别:

因此我们得出经验的结论

  • 当传值是Integer的时候,都可以使用

  • 当传值为 String类型,只能使用#{ } ,因为直接替换的不会给加上 " ",而导致sql语句错误

  • 当传值含有mysql的关键字,只能使用 ${ } ,因为另一种会误认为是字符串

// 1.传值是Integer的时候,都可以使用
// 2.传值为 String类型,只能使用#{ }
// 3.当传值为关键字,只能使用 ${ }

相关内容

热门资讯

分享实测科普“风云麻将辅助器工... 您好:风云麻将这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,...
玩家必看分享(【新版AAoKe... 您好.【新版AAoKer这款游戏可以开挂的,确实是有挂的,需要了解加微【8207163】很多玩家在这...
分享实测科普“潮汕叫友辅助器工... 自定义潮汕叫友系统规律,只需要输入自己想要的开挂功能,一键便可以生成出潮汕叫友专用辅助器,不管你是想...
玩家必看分享(TTPoKer)... 自定义TTPoKer系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你...
今日重磅消息“闽游麻将是不是有... 今日重磅消息“闽游麻将是不是有挂”!其实是有挂亲.闽游麻将这款游戏是可以开挂的,确实是有挂的,通过添...