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