Позвольте вам понять динамический SQL MyBatis за одну минуту!

Java

Одной из мощных функций MyBatis является его динамический SQL.Пробелы и запятые в конце списка, на которые необходимо обращать внимание при объединении в прошлом, теперь можно обрабатывать без ручной обработки.MyBatis использует мощные выражения на основе OGNL для реализации , следующее В основном ввести.

1. если тег

if является наиболее часто используемым оператором суждения, в основном используемым для реализации некоторого простого условного выбора. Базовый пример использования выглядит следующим образом:

    <select id="queryAllUsersByName" resultType="com.example.springboot.mybatisxml.entity.User">
        select * from user where 1=1
        <if test="name != null and name != ''">
            and name = #{name}
        </if>
        <if test="age != null ">
            and age = #{age}
        </if>
    </select>

2. где тег

В приведенном выше примере "1=1" используется, чтобы избежать сообщения об ошибке, когда последующие условия не выполняются. Есть ли способ избежать этого? Конечно, как будет сказано далее, тег автоматически определит, что если в содержащемся теге есть возвращаемое значение, вставить «где» в sql, если последнее возвращенное содержимое тега «где» начинается с и или или он также будет автоматически удален, В приведенном выше примере он заменен тегом «где» и записан следующим образом:

    <select id="queryAllUsersByName" resultType="com.example.springboot.mybatisxml.entity.User">
        select * from user 
        <where>
            <if test="name != null and name != ''">
                and name = #{name}
            </if>
            <if test="age != null ">
                and age = #{age}
            </if>
        </where>
    </select>

3. обрезная этикетка

Функция предназначена для удаления специальных строк.Его атрибут prefix представляет собой префикс инструкции, атрибут prefixOverrides указывает, какие специальные строки необходимо удалить, а атрибут prefixOverrides игнорирует текстовую последовательность, разделенную вертикальной чертой (обратите внимание, что пробелы в этом примере также необходимо), суффиксы обрабатываются так же, как и префиксы.

Основные атрибуты тега обрезки следующие:

  • префикс: Префикс переопределяет и дополняет его содержимое.
  • суффикс: суффикс переопределяет и дополняет его содержимое.
  • prefixOverrides: Условия определения префикса.
  • suffixOverrides: условия для оценки суффикса.

Приведите два примера.

  1. Использовать атрибут префикса
    <select id="queryAllUsersByName" resultType="com.example.springboot.mybatisxml.entity.User">
        select * from user
        <trim prefix="WHERE" prefixOverrides="AND |OR " >
            <if test="name != null and name != ''">
                and name = #{name}
            </if>
            <if test="sex != null ">
                or sex = #{sex}
            </if>
            <if test="age != null ">
                and age = #{age}
            </if>
        </trim>
    </select>
  1. Использовать атрибут суффикса
<update id="update" parameterType="Object">
        UPDATE user
        <trim suffix=" SET " suffixOverrides=",">
            <if test="id != null ">id=#{id},</if>
            <if test="name != null ">name=#{name},</if>
            <if test="age != null ">age=#{age},</if>
        </trim>
        WHERE ID=#{id}
    </update>

4. Этикетки

Функция обхода коллекции.Хорошо может поддерживать обход массива и коллекции интерфейсов List и Set.Часто комбинируется с in в sql.

Основные атрибуты тега foreach следующие:

  • item: указывает текущий элемент в цикле.
  • index: указывает индекс позиции текущего элемента в коллекции.
  • коллекция: настроить имя свойства списка и т. д.
  • открыть и закрыть: настроить, какие символы оборачивают эти элементы коллекции.
  • separator: настраивает разделитель каждого элемента.

Например:

<select id="queryAllUsersByName" resultType="com.example.springboot.mybatisxml.entity.User">
        select * from user where id in
        <foreach item="id" index="index" collection="userList"
                 open="(" separator="," close=")">
            #{id}
        </foreach>
    </select>

До сих пор были представлены общие функции динамического SQL MyBatis.Если у вас есть какие-либо вопросы, пожалуйста, оставьте сообщение для связи!

Рекомендуемое чтение

1. Позвольте вам понять Spring Security за одну минуту! 2. Научитесь использовать mybatis-generator для автоматической генерации кода за одну минуту! 3. Рука об руку с вами, семь способов распространения транзакций Spring в реальном бою 4. Серия SpringBoot — интеграция Mybatis (метод аннотации) 5. Серия SpringBoot — интеграция Mybatis (метод конфигурации XML)


Java Suisui Nian, общедоступный аккаунт, который настаивает на оригинальности, предоставляет вам серию высококачественных технических статей, таких как системная архитектура, микросервисы, Java, SpringBoot, SpringCloud и т. д. Если вы считаете, что статья хорошая, я надеюсь, что вы можете переслать ее или «посмотреть», большое спасибо! Подпишитесь на официальный аккаунт ниже и ответьте «1024», вас ждут сюрпризы!

Эта статья опубликована в блогеOpenWriteвыпуск!