<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中还是会报上面的那个错
可以用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注入的危险
我这个也是3.2.7
追答还不行吗?判断时,用where子句要方便一些
追问我把实体的属性id改成String了这样就没事了,对了 我想问下大于小于在配置文件里怎么写啊?能用我发的代码写个例子么 我在网上找了半天写的都不一样 还是不知道该加在哪
追答你代码里没有大小于号,不知道你是这个意思吗:
第一个方法:
第二个方法:
用这种<![CDATA[]]> 把你的sql包起来
例如:<![ CDATA[你的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语句需要参数传入 在