Mybatis - отличная структура слоя настойчивости, которая поддерживает простые запросы SQL, сохраненные процедуры и расширенное картирование. Mybatis устраняет ручные настройки почти всех кодов JDBC и параметров и поисковой инкапсуляции набора результатов. Mybatis может использовать простые XML или аннотации для конфигурации и оригинального отображения, отображения интерфейсов и Pojos Java (простые старые объекты Java) в записи в базе данных.
Теперь, когда Mybatis становится все более и более популярным, все знают его преимущества, поэтому я не скажу много, просто расскажу о ключевых моментах.
Mybatis обеспечивает динамические функции SQL. Мы можем использовать <if> <fice> <where> <severy> <foreach> и так далее, чтобы мы могли написать динамический SQL, сгенерированный в соответствии с условиями. Однако в середине существует небольшое недопонимание тега <if>, которое мы часто используем, что будет падать, если мы случайно. Позвольте мне привести вам нормальный пример:
<SELECT ID = "findActiveBlogWithTitLike" parameterType = "blog" resultype = "blog"> select * из блога, где State = 'Active' <if test = "title! = null"> и заголовок как #{title} </if> </select>В приведенном выше примере, когда заголовок не равен NULL, условия в теге <if> будут сплайсированы, так что оператор SQL будет динамическим.
Но когда мы судим все условия, пишете ли вы так:
<SELECT ID = "findActiveBlogWithTitLike" parameterType = "blog" resultType = "blog"> select * из блога, где <if test = "userId! = null"> state = 'Active' </if> <if test = "title! = null"> и название как #{title} </if> </select> "Нет проблем, верно? По крайней мере, это синтаксически хорошо, по крайней мере, он может генерировать SQL обычно.
Тем не менее, я не знаю, заметили ли вы, что, когда все условия являются нулевыми, что происходит?
Выберите * из блога, где
Ты это видел? Можно ли успешно выполнить такой SQL?
Ответ, конечно, нет.
Так что мне делать? Затем помните, что когда вы пишете динамический SQL, сначала подумайте, будут ли все условия возникнуть, если все условия не соответствуют действительности, и будет ли только один, где нет условий. Тогда все, что вам нужно сделать, это добавить <где> тег, чтобы обернуть все условия.
<SELECT ID = "findActiveBlogWithTitLike" parameterType = "blog" resultype = "blog"> select * из блога <где> <if test = "userId! = null"> state = 'Active' </if> <if test = "title!
Таким образом, когда все условия не соответствуют действительности, где не будут изложены.
В настоящее время умный друг обнаружил, что если первое условие не соответствует действительности, а второе условие верно, станет ли SQL?
Выберите * из блога, в то время как заголовок, как #{заголовок}Не волнуйтесь, когда вы используете тег <if> для окружения условий, он автоматически удалит и.
Выше приведено небольшая ловушка использования динамических тегов SQL от редактора, чтобы представить вам Mybatis. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!