首页 > 移动平台 > 详细

Mybatis映射文件Mapper.xml中#和$的区别

时间:2019-10-04 20:08:14      阅读:123      评论:0      收藏:0      [点我收藏+]

1、"#"

 简单来说"#"在编译时使用"?"占位符标记,可以有效防止参数注入,相当于我们使用JDBC操作时的PreparedStatement。

2、"$" 

直接把参数拼接到SQL中执行相当于JDBC操作时的Statement

3、参数作为非SQL关键字传递

<insert id="addUser" parameterType="User">
        insert into users values(default, "${username}", "${password}", "${photo}");
</insert>

或者把"$"改成"#"

<insert id="addUser" parameterType="User">
        insert into users values(default, #{username}, #{password}, #{photo});
 </insert>

4、参数作为关键字传递,比如查询条件全是由参数拼接的,只是用一条SQL,有时要按name列查,有时要按age列查

<select id="selectUser" parameterType="User" resultType="User">

      select * from users where ${columnName}  ${condition}  #{columnValue}

</select>

SQL1:select * from users where username = "test";

SQL2:select * from users where userage like "%2";

因为列名和关系条件是关键字,是用"$",列值是非关键字,使用"#"。

三、总结

1、关键字作为参数,使用"$",两边不加""。

2、非关键字作为参数,使用"#"防注入。

其他情况优先使用"#"

Mybatis映射文件Mapper.xml中#和$的区别

原文:https://www.cnblogs.com/u013533289/p/11622937.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!