异常: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.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

at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
at org.mybatis.spring.SqlSessionTemplate

S

q

l

S

e

s

s

i

o

n

I

n

t

e

r

c

e

p

t

o

r

.

i

n

v

o

k

e

(

S

q

l

S

e

s

s

i

o

n

T

e

m

p

l

a

t

e

.

j

a

v

a

:

440

)

a

t

c

o

m

.

s

u

n

.

p

r

o

x

y

.

SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) at com.sun.proxy.

SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)atcom.sun.proxy.Proxy40.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80)
at org.apache.ibatis.binding.MapperProxy

P

l

a

i

n

M

e

t

h

o

d

I

n

v

o

k

e

r

.

i

n

v

o

k

e

(

M

a

p

p

e

r

P

r

o

x

y

.

j

a

v

a

:

144

)

a

t

o

r

g

.

a

p

a

c

h

e

.

i

b

a

t

i

s

.

b

i

n

d

i

n

g

.

M

a

p

p

e

r

P

r

o

x

y

.

i

n

v

o

k

e

(

M

a

p

p

e

r

P

r

o

x

y

.

j

a

v

a

:

85

)

a

t

c

o

m

.

s

u

n

.

p

r

o

x

y

.

PlainMethodInvoker.invoke(MapperProxy.java:144) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85) at com.sun.proxy.

PlainMethodInvoker.invoke(MapperProxy.java:144)atorg.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85)atcom.sun.proxy.Proxy46.selectAnalyzerGroup(Unknown Source)
at
… 99 more

错误原因

在mapper.xml文件中, 判断了, Date 类型的数据与空字符串的比较

例子:

错误的示例代码
				              <!-- 错误代码地点 -->
	  <if test="beginDate!=null and beginDate!=''">
        and c.input_time &gt;=#{beginDate}
      </if>
      						<!-- 错误代码地点 -->
      <if test="endDate!=null and endDate!=''">
        and c.input_time &lt;=#{endDate}
      </if>

解决方法

就只要把那个判断的语句(beginDate!=’ ')删除就可以了

正确的示例代码

		<!-- 修改之后的代码 -->
      <if test="beginDate!=null">
        and c.input_time &gt;=#{beginDate}
      </if>
      
      <if test="endDate!=null">
        and c.input_time &lt;=#{endDate}
      </if>
(这只是本人遇到的一种错误和解决方式, 还可能会有其他的错误可能 ! !)
如有错误请给位大神指导,在此叩谢了!!!
匿名

发表评论

匿名网友