业务场景:
①bean
public class ProductParam extends BaseQuery {
private static final long serialVersionUID = 3115760968824884833L;
/*
* 贷款金额
*/
private String amount;
/*
* 贷款期限
*/
private String limitTime;
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
public String getLimitTime() {
return limitTime;
}
public void setLimitTime(String limitTime) {
this.limitTime = limitTime;
}
}
②SqlMap
<select id="queryProductListPageByParam" parameterType="com.hundsun.trade.product.vo.ProductParam" resultMap="ProductFullInfoResultMap">
SELECT
<include refid="ProductInfoSearchColumn" />
FROM
DK_PLATFORM_PRODUCT dpp
LEFT JOIN DK_PLATFORM_INFO dpi ON dpp.PLATFORM_CODE=dpi.PLATFORM_CODE
<where>
<if test="platformCode != '' and platformCode != null">
AND dpp.PLATFORM_CODE = #{platformCode}
</if>
<if test="platformName != '' and platformName != null">
AND dpi.PLATFORM_NAME LIKE
CONCAT('%',#{platformName},'%')
</if>
<if test="productName != '' and productName != null">
AND dpp.PRODUCT_NAME LIKE
CONCAT('%',#{productName},'%')
</if>
<if test="amount != '' and amount != null">
AND <![CDATA[CONVERT(dpp.PRODUCT_UP_NUM,SIGNED) > #{amount,jdbcType=INTEGER} and CONVERT(dpp.PRODUCT_DOWN_NUM,SIGNED) < #{amount,jdbcType=INTEGER}]]>
</if>
<if test="limitTime != '' and limitTime != null">
AND <![CDATA[CONVERT(dpp.PRODUCT_REPAYMENT_UP_TIME,SIGNED) > #{limitTime,jdbcType=INTEGER} and CONVERT(dpp.PRODUCT_REPAYMENT_DOWN_TIME,SIGNED) < #{limitTime,jdbcType=INTEGER}]]>
</if>
</where>
</select>
③表结构
④总结
1、MyBatis中不能直接使用’>’,’<’等等符号。
方法一:使用
方法二:使用转义<,>,&'"
2、需要将表结构的varchar类型转换为INTEGER,Bean的String类型转换为SIGNED,再比较大小
记录下来,引以为鉴。