mybatis中xml格式的mapper文件中接收入参时#和$的区别

 我来答
解答助手007
2016-12-13 · TA获得超过166个赞
知道小有建树答主
回答量:749
采纳率:0%
帮助的人:304万
展开全部
简单数据类型

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>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式