1. # Traitez toutes les données entrantes comme une chaîne et ajoutez des devis doubles aux données automatiquement entrantes. Par exemple: commande par # user_id #, si la valeur transmise est 111, alors la valeur lorsque l'analyse en SQL est de l'ordre par "111". Si la valeur transmise est id, l'analyse en SQL est l'ordre par "id".
2. $ Affiche directement les données transmises et les génère dans SQL. Par exemple: commande par $ user_id $, si la valeur transmise est 111, alors la valeur lors de l'analyse en SQL est de l'ordre par user_id. Si la valeur transmise est id, l'analyse en SQL est l'ordre par id.
3. La méthode # peut grandement empêcher l'injection de SQL.
4. La méthode $ ne peut pas empêcher l'injection SQL.
5. La méthode $ est généralement utilisée pour passer dans des objets de base de données, tels que le passage des noms de table.
6. Généralement, si vous pouvez utiliser #, n'utilisez pas $.
Lorsque vous utilisez l'ordre par des paramètres dynamiques lors du tri MyBatis, vous devez faire attention à l'utilisation de $ au lieu de #
Remplacement des cordes
Par défaut, l'utilisation de la syntaxe de format # {} fait que MyBatis crée une propriété d'instruction prétraitée et définit une valeur de sécurité avec l'arrière-plan (tel que?). C'est sûr et rapide, et parfois vous voulez simplement insérer une chaîne qui ne change pas directement en instruction SQL. Par exemple, comme Order By, vous pouvez l'utiliser comme ceci: Ordre par $ {Columnname}
Ici, Mybatis ne modifiera ni ne s'échappera pas des chaînes.
Important: il n'est pas sûr d'accepter la sortie de contenu de l'utilisateur et de le fournir à une chaîne inchangée dans l'instruction. Cela peut conduire à des attaques d'injection SQL potentielles, vous ne devez donc pas permettre aux utilisateurs d'entrer ces champs, ou généralement de les échapper et de les vérifier vous-même.
Ce qui précède est la brève discussion sur la différence entre # et $ dans Mybatis. J'espère que tout le monde pourra soutenir wulin.com ~