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中还是会报上面的那个错 展开
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中还是会报上面的那个错 展开
2个回答
展开全部
更多追问追答
追问
还是会报那个错啊 实体中的id也是integer类型
追答
那你这种写法试一下 传参时把id=#{id}改为id=${id}
select * from f_product_catalog where 1 = 1
and id=${id}//id为Integer类型
猜测可能是因为#{}这种方式使用的是ognl解析参数,
改成这种${}应该就可以,但是这样可能会存在sql注入的危险
展开全部
你可以指定类型;
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语句需要参数传入 在
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询