1. # Trate todos os dados recebidos como uma string e adicione cotações duplas aos dados automaticamente recebidos. Por exemplo: Ordem por #user_id #, se o valor passado é 111, o valor ao analisar o SQL é a ordem de "111". Se o valor aprovado for ID, o analisado no SQL é a ordem por "ID".
2. $ Exibe os dados passados diretamente e o gera no SQL. Por exemplo: Ordem por $ user_id $, se o valor passado é 111, o valor quando analisado no SQL é a ordem por user_id. Se o valor aprovado for ID, o analisado no SQL é a ordem por ID.
3. O método # pode impedir bastante a injeção de SQL.
4. O método $ não pode impedir a injeção de SQL.
5. O método $ geralmente é usado para passar nos objetos do banco de dados, como a passagem nos nomes da tabela.
6. Geralmente, se você pode usar #, não use $.
Ao usar o pedido por parâmetros dinâmicos ao classificar Mybatis, você precisa prestar atenção ao uso de $ em vez de #
Substituição de string
Por padrão, o uso da sintaxe #{} Format faz com que o MYBATIS crie uma propriedade de instrução pré -processada e defina um valor seguro com ele como plano de fundo (como?). Isso é seguro e rápido, e às vezes você só deseja inserir uma string que não muda diretamente na instrução SQL. Por exemplo, como a ordem por, você pode usá -lo assim: Order por $ {columnName}
Aqui Mybatis não modificará ou escapará de cordas.
IMPORTANTE: Não é seguro aceitar a saída de conteúdo do usuário e fornecê -lo a uma string inalterada na instrução. Isso pode levar a possíveis ataques de injeção de SQL; portanto, você não deve permitir que os usuários entrem nesses campos ou geralmente escapem e verifiquem você mesmo.
O exposto acima é a breve discussão sobre a diferença entre # e $ em mybatis. Espero que todos possam apoiar o wulin.com ~