我正在传递HashMap
HashMap<String, String> paramsMap = new HashMap<String, String>();
paramsMap.put("jobXXX", "" + jobState.getCode());
paramsMap.put("rmi_auftrag_xxx", "rmi_auftrag_status");
到MyBatis查询:
<select id="loadRmiOrdersByTypeOrState" parameterType="map" resultMap="rmiJobMap">
<![CDATA[
SELECT rmi_auftrag_id as rmiJobId,
rmi_auftrag_typ as rmiJobType,
rmi_auftrag_status as rmiJobState,
rm_dokument_id as rmDocId
FROM lis_mgr.rmi_auftrag
WHERE #{rmi_auftrag_xxx} = #{jobXXX,javaType=String,jdbcType=NUMERIC}
]]>
</select>
jobXXX参数的类型是一个整数。有没有办法告诉MyBatis将整数字符串形式转换为“真”整数?
答案 0 :(得分:1)
您可以将Integer作为Integer放入HashMap,然后运行查询。
HashMap<String, Object> paramsMap = new HashMap<String, String>();
paramsMap.put("jobXXX", jobState.getCode());
paramsMap.put("rmi_auftrag_xxx", "rmi_auftrag_status");
答案 1 :(得分:0)
方法1)。用户自定义类型处理程序
public class StringToIntTypeHandler extends BaseTypeHandler<String> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, Integer.valueOf(parameter));
}
//...
}
XML
#{jobXXX,typeHandler=xxx.StringToIntTypeHandler}
方法2)。使用ognl
<bind name="param" value="@java.lang.Integer@valueOf(jobXXX)" />
//...
where #{rmi_auftrag_xxx} = #{param}
或
${@java.lang.Integer@valueOf(jobXXX)}