J'utilise mybatis récemment, et j'ai déjà utilisé ibatis. De manière générale, c'est similaire, mais j'ai quand même rencontré beaucoup de problèmes
Par exemple, utilisez #{. } et ${} pour transmettre les paramètres. La différence,
utilise # pour transmettre les paramètres, l'analyse de l'instruction SQL ajoutera "", par exemple, sélectionnez * dans la table où nom = #{nom}, le le nom transmis est Xiao Li, puis il sera imprimé à la fin. Celui-ci est
select * from table which name = 'Xiao Li', qui sera analysé comme une chaîne. Cela présente des avantages évidents par rapport à. $, n'est-ce pas ? #{} le passage de paramètres peut empêcher l'injection SQL, si les paramètres que vous transmettez sont des guillemets simples, alors si vous utilisez ${}, cette méthode signalera une erreur
Un autre scénario est si. vous souhaitez effectuer un tri dynamique, comme trier par colonne, assurez-vous d'utiliser ${} à ce moment-là, car si vous utilisez #{}, ce qui sera imprimé sera
select * from table order by 'name', qui ne sert à rien.
Actuellement, si vous pouvez utiliser #, n'utilisez pas $.
La différence entre # et $ dans mybatis
1. #Traitez les données entrantes comme une seule chaîne de caractères, un guillemet double sera ajouté aux données automatiquement transmises. Par exemple : trier par #user_id#, si la valeur transmise est 111, alors la valeur analysée dans SQL est triée par "111". Si la valeur transmise est id, le SQL analysé est trié par "id". 🎜>
3. La #méthode peut empêcher dans une large mesure l'injection SQL.
4. La méthode $ ne peut pas empêcher l'injection SQL.
5. La méthode $ est généralement utilisée pour transmettre des objets de base de données, tels que des noms de table
6 Si # peut être utilisé, n'utilisez pas $.
En fait, la différence est très simple. Vous la comprendrez avec un exemple. Écrivez une phrase SQL - par exemple : select * from user_role which user_code = "100";
Pour cette phrase, vous devez écrire select * from ${tableName} which user_code = #{userCode}
Ainsi, le symbole $ est directement épelé dans sql, et le symbole # sera épissé avec sql sous la forme d'une chaîne.
Pour plus d'articles connexes sur la différence entre les paramètres #{} et ${} dans Mybatis et le résumé de la différence entre # et $, veuillez faire attention au PHP Site chinois !