ibaits #和$有什么区别

#和$有什么区别,即select   *   from   topic   where   id=#id#和select   *   from   topic   where   id=$id$有区别吗?

还有我要执行这个语句select   *   from   topic   where   boardid   in   (1,2,3),配置文件如下:

这样写会报错:
<select   id= "getLists "   resultMap= "topicListResult "   parameterClass= "topicInfo ">
        select   *   from   topic  
<dynamic   prepend= "where ">
<isNotNull   prepend= "and "   property= "boardid ">
boardid   in   (#boardid#)
</isNotNull>
</dynamic>
</select>

这样写就没事,即用$替换#
<select   id= "getLists "   resultMap= "topicListResult "   parameterClass= "topicInfo ">
        select   *   from   topic  
<dynamic   prepend= "where ">
<isNotNull   prepend= "and "   property= "boardid ">
boardid   in   ($boardid$)
</isNotNull>
</dynamic>
</select>

这是为什么?


用$$   有点宏替换的意思,如下列映射:
<select   id= "users "   resultMap= "user "> select   *   from   a   $name$ </select> ,则在传入参数可以queryForList( "users ",   "where   name= '张三 ' ");
用##则是预编译处理,传入的是什么类型就是什么类型,如下列映射:
<select   id= "users "   resultMap= "user "> select   *   from   a   where   a.name=#name# </select> ,
你在传入参数时可以queryForList( "users ",   "张三 ");则生成的sql语句是select   *   from   a   where   a.name= '张三 '。


#表示参数的方式传入类似于sql语句里的?,$就是简单的字符串替换,用相应的值替换$$里的内容。

你可能感兴趣的:(sql)