mybatis 时间区间比较
jdbcType=TIMESTAMP ,jdbcType=DATE决定了时间的格式 有些函数不同版本的mysql不具备 注意 传入的是date类型 <if test="empId != null and empId != ''" >
AND o.EMP_ID = ${empId} </if> 不能有类似and empId != ''这样和字符串的比较,除非你传入的是专为string后的类型 ### Error querying database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
### Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String] with root cause
java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
at org.apache.ibatis.ognl.OgnlOps.compareWithConversion(OgnlOps.java:93)
at org.apache.ibatis.ognl.OgnlOps.isEqual(OgnlOps.java:143)
at org.apache.ibatis.ognl.OgnlOps.equal(OgnlOps.java:802)
at org.apache.ibatis.ognl.ASTNotEq.getValueBody(ASTNotEq.java:53)
at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)
at org.apache.ibatis.ognl.ASTAnd.getValueBody(ASTAnd.java:61)
at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
。。。。
<![CDATA[ ]]>只是转义< > 这种特殊符号
直接上代码,此时数据库使用的Date类型:(即:数据库类型date,传入是string)
<if test="minCreateTime != null and minCreateTime != ''"> <![CDATA[ and g.create_time >= to_date(#{minCreateTime,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]> </if> <if test="maxCreateTime != null and maxCreateTime != ''"> <![CDATA[ and g.create_time <= to_date(#{maxCreateTime,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]> </if>
若是字符串类型,也可以直接比较,如下:(传入的是date,数据库任意类型)
<if test="createTime != null"> AND CREATE_TIME = CONCAT(CONCAT('%', #{createTime,jdbcType=DATE}), '%') </if> <if test="updateTime != null"> AND UPDATE_TIME = CONCAT(CONCAT('%', #{updateTime,jdbcType=DATE}), '%') </if>
<if test="minCreateTime != null and minCreateTime != ''">
<![CDATA[ and g.create_time >= to_date(#{minCreateTime,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]>
</if>
<if test="maxCreateTime != null and maxCreateTime != ''">
<![CDATA[ and g.create_time <= to_date(#{maxCreateTime,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]>
</if>
业务驱动技术,技术是手段,业务是目的。
<if test="(prassignTime != null )" > <![CDATA[ and o.ASSIGN_TIME >= #{prassignTime,jdbcType=TIMESTAMP} ]]> </if> <if test="(lsassignTime != null)" > <![CDATA[ and o.ASSIGN_TIME <= #{lsassignTime,jdbcType=TIMESTAMP} ]]> </if> <if test="(prfirstdailTime != null ) " > <![CDATA[ and o.FIRSTDAIL_TIME >= #{prfirstdailTime,jdbcType=TIMESTAMP} ]]> </if> <if test=" (lsfirstdailTime != null)" > <![CDATA[ and o.FIRSTDAIL_TIME <= #{lsfirstdailTime,jdbcType=TIMESTAMP} ]]> </if> <if test="status != null and status != ''" > AND o.STATUS = ${status} </if>