mybatis Causa: org.apache.ibatis.binding.BindingException: parámetro 'id' no encontrado. Los parámetros disponibles son [0, 1, param1, param2]

Ocurrencia anormal:

interfaz de capa de mapeador

 interfaz pública EmpMapper {
     public Emp getEmpByIdAndName (Id. entero, nombre de cadena);
}

declaración xml: sql

< select id = "getEmpByIdAndName" resultType = "com.mybatis.bean.Emp" databaseId = "mysql" >
        seleccione * de emp donde id = # {id} y name = # {name}
    </ select >

Durante la prueba, la excepción anterior

En mybatis:

1 "Parámetro único: mybatis no realizará un procesamiento especial, # {nombre del parámetro / nombre arbitrario}: extraiga el valor del parámetro. Tales como:

public Emp getEmpById (ID de entero);
 < select id = "getEmpById" resultType = "com.mybatis.bean.Emp" databaseId = "mysql" >
        seleccione * de emp donde id = # {id}
    </ select >

2》 Múltiples parámetros: mybatis hará un tratamiento especial. Se encapsularán múltiples parámetros en un mapa, clave: param1 ... paramN, o también es posible el índice del parámetro, valor: valor del parámetro entrante,

# {} Es obtener el valor de la clave especificada del mapa; de acuerdo con la solicitud de excepción, los parámetros disponibles son [0, 1, param1, param2], tales como:

public Emp getEmpByIdAndName (Id. entero, nombre de cadena);
 < select id = "getEmpByIdAndName" resultType = "com.mybatis.bean.Emp" databaseId = "mysql" >
        seleccione * de emp donde id = # {0} y name = # {1}
    </ select >

O:

< select id = "getEmpByIdAndName" resultType = "com.mybatis.bean.Emp" databaseId = "mysql" >
        seleccione * de emp donde id = # {param1} y name = # {param2}
    </ select >

 

Pero el procesamiento anterior no se puede conocer, puede usar la anotación @Param en la interfaz, especificar claramente los parámetros encapsulados en la clave en el mapa

public Emp getEmpByIdAndName (@Param ("id") Id. entero, @Param ("name") String name);

En este momento, puede usar el nombre del parámetro especificado en el archivo xml:

< select id = "getEmpByIdAndName" resultType = "com.mybatis.bean.Emp" databaseId = "mysql" >
        seleccione * de emp donde id = # {id} y name = # {name}
    </ select >

 

Cuando pasamos más de dos parámetros, generalmente encapsulamos los parámetros en objetos.

Supongo que te gusta

Origin www.cnblogs.com/tdyang/p/12717933.html
Recomendado
Clasificación