Разница между # и $ в mybatis
1. # Обратите все входящие данные как строку и добавьте двойные кавычки к автоматически входящим данным. Например: Заказ от #user_id #, если значение, передаваемое, равно 111, то значение при анализе в SQL - это «111». Если проходящее значение IS ID, проанализированный в SQL - это «ID».
2. $ отображает переданные данные напрямую и генерирует их в SQL. Например: Заказ от $ user_id $, если пройденное значение IS 111, то значение при анализе в SQL - Order by user_id. Если проходящее значение IS ID, проанализированное в SQL является заказом по ID.
3. Метод # может значительно предотвратить инъекцию SQL.
4. Метод $ не может предотвратить инъекцию SQL.
5. Метод $ обычно используется для передачи в объектах базы данных, таких как передача имен таблиц.
6. Как правило, если вы можете использовать #, не используйте $.
Предотвратить инъекцию SQL
ПРИМЕЧАНИЕ. Не пишите операторы SQL, как Select * From T_STU, где S_NAME Like '%$ name $%', что чрезвычайно уязвимо для инъекционных атак.
Параметры в формате «$ {xxx}» будут непосредственно участвовать в компиляции SQL, что предотвращает инъекционные атаки. Однако, когда дело доходит до имен динамических таблиц и имен столбцов, вы можете использовать только форматы параметров, такие как «$ {xxx}».
При написании операторов отображения Mybatis попробуйте использовать формат «#{xxx}». Если вам нужно использовать параметры, такие как «$ {xxx}», вы должны вручную выполнять хорошую работу по фильтрации, чтобы предотвратить атаки впрыска SQL.
пример
<sql id = "condition_where"> <isnotempty property = "companyName" prepend = "и"> t1.company_name, как # companyname # </isnotempty> </sql>
Код Java похож на ваш оригинальный, но в нем нет ничего плохого. Если вы думаете, что это трудно инкапсулировать суждение NULL и «%» в один метод.
if (! stringutil.isempty (this.companyname)) {table.setcompanyname ("%" + this.companyname + "%"); }Выше приведено краткое обсуждение разницы между # и $ в Mybatis и методом предотвращения инъекции SQL. Я надеюсь, что все будут поддерживать wulin.com больше ~