Mybatis异常No existe ningún captador para la propiedad denominada 'XXX' en la 'clase java.lang.String'

Versión de Mybatis: mybatis-3.0.6.jar

1. Cuando el parámetro de entrada es de tipo cadena (incluido java.lang.String.),
usamos #{xxx} para introducir el parámetro. Se generará una excepción. No hay ningún captador para la propiedad denominada 'XXX' en la 'clase java .lang.String'

<select id="getBookingCount" resultType="int" parameterType="string">

select count(*) from TB_EMPC_BOOKING_ORDER T

where (t.state = '1' or t.state = '2')

and t.appointmenttime = #{state}

</select>

2. Solución 1: cambie #{xxx} a #{_parameter}

<select id="getBookingCount" resultType="int" parameterType="string">

select count(*) from TB_EMPC_BOOKING_ORDER T

where (t.state = '1' or t.state = '2')

and t.appointmenttime = #{_parameter}

</select>

3. Solución 2: Puedes definirlo de antemano en el método:

public int  methodName(@Param(value="state") String state ){

  ...

}

4. Motivo: Mybatis usa OGNL para analizar parámetros de forma predeterminada, por lo que automáticamente usará el árbol de objetos para obtener el valor string.xxx. Si no está definido en el método, se lanzará una excepción.

5. No sé si otras versiones de mybatis tienen este problema y aún no lo he probado.

Referencia: https://www.cnblogs.com/orac/p/6726323.html

Supongo que te gusta

Origin blog.csdn.net/qq_38696286/article/details/120459547
Recomendado
Clasificación