我刚接触Spring,对body {
background: url('/img/back1.jpg');
}
有点困惑。我被赋予了编辑选择查询条件的任务(非常简单),但是事情变得棘手。
我仅将iBatis
对象(带有setter和getter)传递给SQLMapper以提供条件参数。
这就是我的java.sql.Date
子句的样子
WHERE
但是我得到一个错误
<sql id="dateWhere">
<where>
<if test="arg.sqlStartDate != null and arg.sqlEndDate != null">
table.date BETWEEN #{arg.sqlStartDate} AND #{arg.sqlEndDate}
</if>
</where>
</sql>
我研究了需要指定参数的org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='arg.sqlStartDate', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException
。 SOlink。还添加了jdbcType
函数以进一步指定该参数是DATE()
变量。
DATE
我开始工作了。但是我注意到与其他Mapper一起,他们没有指定每个参数的 <sql id="dateWhere">
<where>
<if test="arg.sqlStartDate != null and arg.sqlEndDate != null">
table.date BETWEEN DATE(#{arg.sqlStartDate,jdbcType=DATE}) AND DATE(#{arg.sqlEndDate,jdbcType=DATE})
</if>
</where>
</sql>
。因此,我对这个问题的真正含义,原因,发生的方式,做错的事情感到困惑。请给我信息以进一步了解此事。谢谢
答案 0 :(得分:1)
您不需要使用DATE()函数。
使用java.util.Date代替java.sql.Date,table.date BETWEEN #{arg.sqlStartDate} AND #{arg.sqlEndDate}
应该可以工作。
显然,iBatis比java.sql.Date可以更好地处理java.util.Date
答案 1 :(得分:1)
https://ibatis.apache.org/docs/java/pdf/iBATIS-SqlMaps-2_en.pdf
第26页的 jdbcType
这是由于JDBC驱动程序无法自动识别某些列的列类型。