Рекомендуемое чтение:
Mybatis введение Учебное пособие по обучению (I) - Mybatis Quick Start
Что такое динамический SQL? Какова динамическая функция SQL?
В традиционном способе использования JDBC я считаю, что, когда вы объединяете сложные операторы SQL, вам нужно их сплачивать. Если вы не будете осторожны, даже если вам не хватает мест, это приведет к ошибкам. Динамическая функция SQL Mybatis заключается в решении этой проблемы. Его можно объединить в очень гибкие операторы SQL с помощью IF, выберите, когда, в противном случае, обрезать, где, установить, теги Foreach, тем самым повышая эффективность разработчиков.
Давайте испытаем очарование Mybatis Dynamic SQL:
1. Если: вы можете судить, и я тоже могу судить!
Как программист, который не понимает, если! Вы также можете использовать, если в Mybatis:
<SELECT ID = "findUserById" resultType = "user"> select * из пользователя, где <if test = "id! = null"> id =#{id} </if> и deleteflag = 0; </select>Приведенный выше пример: если входящий идентификатор не является пустым, то SQL будет сплайсировать id = #{id}. Я верю, что каждый может понять это, прочитав это, и я не скажу много.
Осторожные люди найдут проблему: «Это не так с вами! Если идентификатор, в котором вы проходите, нулевой, то ваш окончательный оператор SQL станет Select * от пользователя, где и deleteflag = 0, есть проблема с этим утверждением!»
Да, в это время, где должна быть сделана тег Mybatis:
2. Где со мной, условия сплайсинга SQL - все о облаках!
Давайте изменим приведенный выше пример, где:
<SELECT ID = "findUserById" resultType = "user"> select * из пользователя, где <где> <if test = "id! = null"> id =#{id} </if> и deleteflag = 0; </where> </select>Некоторые люди собираются спросить: «Что вы делаете? По сравнению с вышеизложенным, есть лишь дополнительный, где тег! Это все еще будет отображаться, выберите * от пользователя, где и deleteflag = 0?»
Действительно, на первый взгляд, есть лишь дополнительный, где бир, но, по сути, Mybatis имеет дело с этим. Когда он встречается и или или или знает, как с этим справиться. На самом деле, мы можем настроить эти правила обработки через тег TRIM.
3. Трим: моя территория, я принимаю решение!
Вышеуказанный, где тег можно выразить следующим образом, используя TRIM:
<trim prefix = "где" prefixoverrides = "и | или"> ... </trim>
Это означает: когда где следуют и или или или или или удаляются. В дополнение к тому, где на самом деле есть еще одна классическая реализация, которая установлена.
4. SET: Поверьте мне, без ошибок!
<Update id = "updateUser" parameterType = "com.dy.entity.user"> Обновление пользователя набор <if test = "name! = null"> name = #{name}, </if> <if test = "пароль! = null"> password = #{password}, </if> <if test = "age! null "> id = #{id} </if> и deleteflag = 0; </where> </update>Вопрос появляется снова: «Если у меня есть только имя, но не ноль, то этот SQL становится набор обновлений name = #{name}, где .........? Запятая после вашего имени приведет к ошибке!»
Да, в настоящее время вы можете использовать установленную тег, предоставленную для нас Mybatis. Следующее изменяется через тег SET:
<Обновление id = "updateUser" parameterType = "com.dy.entity.user"> Обновление пользователя набор <set> <if test = "name! = null"> name = #{name}, </if> <if test = "password! = null"> password = #{password}, </if> <if test = age! test = "id! = null"> id = #{id} </if> и deleteflag = 0; </worch> </update>Это может быть выражено как:
<trim prefix = "set" suffixOverrides = ","> ... </trim>
Где использует префиксоверриды (префикс), SET использует суфксерриды (суффикс), вы можете понять это!
5. Foreach: у вас есть, у меня есть Foreach, не думайте, что это только вы!
В Java есть, и это может быть зациклено. Точно так же в Mybatis есть Foreach, и его можно использовать для реализации петли. Конечно, петлевые объекты в основном являются контейнерами и массивами Java.
<SELECT ID = "SELECTPOSTIN" RESTEDTYPE = "Domain.Blog.post"> SELECT *из POST PWARE ID в <foreach item = "item" index = "index" collection = "list" open = "(" sepreator = "," close = ")">#{item} </for> </selet>Передайте экземпляр списка или массив в качестве объекта параметра в Mybatis. При этом Mybatis автоматически завершит его в карту и использует имя в качестве ключа. Экземпляр списка займет «список» в качестве ключа, а ключом экземпляра массива будет «массив». Точно так же, когда объект цикла является картой, индекс на самом деле является ключом карты.
6. Выберите: я выбрал тебя, ты выбрал меня!
В Java есть Switch, и у Mybatis есть выбор.
<SELECT ID = "findActiveBlogliks" resultType = "blog"> select * из блога, где состояние = 'Active' <selet> <when test = "title! = null"> и заголовок, как #{название} </when> <when test = "Автор! = null и автор.В приведенном выше примере: когда ни заголовок, ни автор не являются нулевыми, затем выберите один из двух (первое предпочтительнее). Если оба являются нулевыми, то выберите в противном случае один. Если есть только один из Tilte и автора, который не является нулевым, выберите тот, который не является нулевым.
Выше приведено учебное пособие для Mybatis (IV) динамического SQL Mybatis, представленного вам. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!