Mybatis细节--$和#的区别

$和#的区别

关于mybatis

mybatis是一个操作数据的框架,底层实现还是通过JDBC来完成。
在使用mybatis框架操作数据库时,需要写配置文件,其中关于sql的xml文件中,有两种取值方式:使用$和#。
$:获取的是传过来的对象的属性,仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换。
#:解析为一个 JDBC 预编译语句(prepared statement)的参数标记符,一个 #{ } 被解析为一个参数占位符 。

操作演示

xml文件配置sql语句,完成更新数据。

 <!--更新-->
	 <update id="update" parameterType="cn.itsource.domain.Product">
		update product set productName = #{productName},
		dir_id = #{dir_id},salePrice = #{salePrice},
		supplier = #{supplier},brand = #{brand},
		cutoff = #{cutoff},costPrice = #{costPrice}where id = ${id} 
	 </update>

在上面的sql语句中,id使用了$来取值,可以完成功能。
查看日志打印的sql语句:
在这里插入图片描述可以看出:使用 $是直接拼接字符串。 而使用#是占位符,可以防止sql注入,更加安全。

猜你喜欢

转载自blog.csdn.net/weixin_43678301/article/details/108121443