MyBatis传入Integer类型使用if判断时会报错 10

<selectid="select"resultType="com.huafu.controller.entity.ProductCatalogEntity">selec... <select id="select" resultType="com.huafu.controller.entity.ProductCatalogEntity">
select * from f_product_catalog where 1 = 1
<if test="_parameter!=null">
and id=#{_parameter}
</if>
</select> 正确
<select id="select" resultType="com.huafu.controller.entity.ProductCatalogEntity">
select * from f_product_catalog where 1 = 1
<if test="id!=null">
and id=#{id}//id为Integer类型
</if>
</select>就错报
There is no getter for property named 'id' in 'class java.lang.Integer' 在网上查了很多说是用_parameter,试了不会报错 可这只能传一个参数,如果传多个int 类型的值要怎么办?我放到map中还是会报上面的那个错
展开
 我来答
来咯龙年
推荐于2017-04-27 · TA获得超过171个赞
知道答主
回答量:43
采纳率:0%
帮助的人:21.7万
展开全部

可以用parameterType指定参数类型啊,如果要判断多个值,可以定义一个vo类,把要判断的字段包进去,判断和传值的时候通过对象点的方法就可以了,很方便

可以这样用

忘了说,我这个是MyBatis版本是3.2.7

更多追问追答
追问
还是会报那个错啊 实体中的id也是integer类型
追答
那你这种写法试一下 传参时把id=#{id}改为id=${id}

select * from f_product_catalog where 1 = 1

and id=${id}//id为Integer类型

猜测可能是因为#{}这种方式使用的是ognl解析参数,
改成这种${}应该就可以,但是这样可能会存在sql注入的危险
叶子的小情意
2015-07-27 · TA获得超过300个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:140万
展开全部
你可以指定类型;
BIT         FLOAT      CHAR           TIMESTAMP       OTHER       UNDEFINEDTINYINT     REAL       VARCHAR        BINARY          BLOB        NVARCHARSMALLINT    DOUBLE     LONGVARCHAR    VARBINARY       CLOB        NCHAR
INTEGER     NUMERIC    DATE           LONGVARBINARY   BOOLEAN     NCLOB
BIGINT      DECIMAL    TIME           NULL            CURSOR
这些都是myBatis支持的类型  你可以这么写 #{id,jdbcType=INTEGER}
追问
不行的还是会报那个错
追答
你没指定这个sql语句需要参数传入  在
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式