Primero, use # {} aquí, cuando use #:
1. Utilizado para pasar parámetros, sql agregará "" al analizar, como una cadena para analizar, como role_id = "roleid";
2. # {} puede evitar en gran medida la inyección de SQL;
Extensión:
1. Utilice {roleId, jdbcType = INTEGER}, luego el valor de sql al analizar es roleId = roleId, y se informará un error durante la ejecución;
2. El método $ {} no puede evitar la inyección de SQL;
3. $ se usa generalmente para objetos de base de datos entrantes, como nombres de tablas de bases de datos;
4. Intente usar # {} cuando pueda usar # {};
Nota:
Tenga en cuenta que cuando use el orden por parámetros dinámicos al ordenar mybaties, use $ {} en lugar de # {};
Segundo, la diferencia principal es # con comillas dobles, $ sin
Por ejemplo: # {id} significa 'id', $ {id} significa id
El siguiente es el sql de la anotación Mybatis @Select
@Select ("seleccionar id, nombre del usuario donde id = # {id}") public User getUser (@Param ("id") long id);
@Select ("select id, name from user where id = $ {id}")
public User getUSer (@Param ("id") long id);
Si la identificación pasada es 1, el sql real es
seleccione id, nombre del usuario donde id = '1'
seleccione id, nombre del usuario donde id = 1
Hay un caso del método Mybaits
@Select ("seleccionar id, nombre del usuario donde id = # {id}") public User getUser (@Param ("id") long id);
@Select ("seleccionar id, nombre del usuario donde id = # {id}") public User getUser (id largo);
El segundo es porque puede omitir @Param ("") porque pasa un parámetro, pero no puede usar $ {} en este caso.
Al pasar más de dos parámetros, debe escribir @Param ("")