2 xinhubei xinhubei 于 2013.06.28 21:50 提问

ibatis传参数用#stuid#传不进去,用$stuid$就可以,大家看看为什么啊?
<typeAlias alias="product" type="com.cms.pojo.TBankproddata" />

<select id="getProd" parameterClass="java.util.Map" resultClass="product">
    select stuid,stuname   from student   stuid = '$stuid$'

</select>

这是sql语句,现在可以查询出来泛型的list,但是我换成#stuid#,就是空的,不报错,返回的list为空,郁闷啊,ibatis的包换了两个了,不知道是哪里的问题

2个回答

QQ372252612
QQ372252612   2013.07.10 17:26
已采纳

请问丢进来的stuid是Map么?你XML里参数写着parameterClass="java.util.Map"
我看你的SQL语句,判断stuid就是一个普通类型吧 这个不应该是parameterClass="java.lang.String"或者parameterClass="java.lang.Integer"吗?
照样用##吧

yjsxxgm
yjsxxgm   2013.07.09 15:13

建议你网上查查#与$区别:
在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如:

select * from table where id = #id# ,其中如果字段id为字符型,那么#id#表示的就是'id'类型,如果id为整型,那么#id#就是id类型。

select * from table where id = $id$ ,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,那么Sql语句应该写成 select * from table where id = '$id$'

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!