mybatis中xml格式的mapper文件中接收入参时#和$的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis中xml格式的mapper文件中接收入参时#和$的区别相关的知识,希望对你有一定的参考价值。
参考技术A 简单数据类型User selectByPrimaryKey(Integer id);
sql映射:
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from base.tb_user
where id = #id,jdbcType=INTEGER
</select>
对于简单数据类型,sql映射语句中直接#变量名这种方式引用就行了,其实这里的"变量名"可以是任意的。mapper接口方法传递过来的值,至于其叫什么名字其实是不可考也没必要知道的。
而且JAVA反射只能获取方法参数的类型,是无从得知方法参数的名字的。
比如上面这个示例中,使用#id来引用只是比较直观而已,使用其他名字来引用也是一样的。所以当在if元素中test传递的参数时,就必须要用_parameter来引用这个参数了。像这样:
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from tb_user
<if test="_parameter != 0">
where id = #id,jdbcType=INTEGER
</if>
</select>
以上是关于mybatis中xml格式的mapper文件中接收入参时#和$的区别的主要内容,如果未能解决你的问题,请参考以下文章
Mybatis之mapper.xml配置文件中的#{}和${}