So konfigurieren Sie die Parameterzuordnung in der SQL-Zuordnungsdatei in MyBatis und wie Sie sie verwenden

So konfigurieren Sie die Parameterzuordnung in der SQL-Zuordnungsdatei in MyBatis und wie Sie sie verwenden

MyBatis ist ein Open-Source-Java-Persistenz-Framework, das Daten in der Datenbank automatisch Java-Objekten zuordnen kann und dafür sorgt, dass Java-Objekte sehr bequem in der Datenbank gespeichert werden können. In MyBatis stellt die SQL-Zuordnungsdatei einen sehr wichtigen Teil dar. Sie kann eine Zuordnungsbeziehung zwischen Java-Objekten und Datenbanktabellen bereitstellen und die Parameterzuordnung konfigurieren, sodass die Eigenschaften von Java-Objekten den Parametern von SQL-Anweisungen zugeordnet werden können. In diesem Artikel werden die Parameterzuordnungskonfiguration und die Verwendung der SQL-Zuordnungsdatei in MyBatis vorgestellt.

Fügen Sie hier eine Bildbeschreibung ein

Parameterzuordnungen in SQL-Zuordnungsdateien

In der SQL-Zuordnungsdatei bezieht sich die Parameterzuordnung auf die Zuordnung der Eigenschaften von Java-Objekten zu den Parametern von SQL-Anweisungen. In MyBatis kann die Parameterzuordnung auf zwei Arten konfiguriert werden:

Verwenden Sie #{}-Platzhalter

In SQL-Anweisungen können wir #{}-Platzhalter zur Darstellung von Parametern verwenden. Angenommen, wir haben eine Benutzerklasse mit einem ID-Attribut und einem Namensattribut:

public class User {
    
    
    private int id;
    private String name;

    // 省略 getter 和 setter 方法
}

Wir können #{}-Platzhalter in der SQL-Anweisung verwenden, um die Parameter id und name zu kennzeichnen:

<select id="getUserById" resultType="User">
    SELECT * FROM users WHERE id = #{id} AND name = #{name}
</select>

Beim Ausführen dieser SQL-Anweisung setzt MyBatis die Werte der Parameter id und name automatisch auf den Platzhalter #{} in der SQL-Anweisung.

Verwenden Sie ${}-Platzhalter

Zusätzlich zu den Platzhaltern #{} können wir auch Platzhalter von KaTeX parse error: Expected 'EOF', got '#' at position 15: {} verwenden, um Parameter darzustellen. Im Gegensatz zum #̲{}-Platzhalter ersetzt der {}-Platzhalter direkt den Wert des Parameters in der SQL-Anweisung. Angenommen, wir haben eine Page-Klasse, die eine Offset-Eigenschaft und eine Limit-Eigenschaft enthält:

public class Page {
    
    
    private int offset;
    private int limit;

    // 省略 getter 和 setter 方法
}

Wir können den Platzhalter ${} in der SQL-Anweisung verwenden, um die Offset- und Limit-Parameter darzustellen:

<select id="getUsersByPage" resultType="User">
    SELECT * FROM users LIMIT ${offset}, ${limit}
</select>

Beim Ausführen dieser SQL-Anweisung ersetzt MyBatis die Werte der Offset- und Limit-Parameter direkt in den Platzhalter ${} in der SQL-Anweisung.

Verwenden Sie Aliase für Parametertypen

In der SQL-Zuordnungsdatei können wir Parametertyp-Aliase verwenden, um die Konfiguration der Parameterzuordnung zu vereinfachen. Parametertyp-Aliase ermöglichen es uns, einen Java-Typ mit einem Kurznamen darzustellen.

Beispielsweise können wir einen Parametertyp-Alias ​​vom Typ Seite wie folgt definieren:

<typeAliases>
    <typeAlias type="com.example.Page" alias="page" />
</typeAliases>

Dann können wir in der SQL-Anweisung #{page.offset} und #{page.limit} verwenden, um die Offset- und Limit-Eigenschaften des Seitentyps darzustellen:

<select id="getUsersByPage" resultType="User">
    SELECT * FROM users LIMIT #{page.offset}, #{page.limit}
</select>

Parameterzuordnungen in SQL-Zuordnungsdateien verwenden

Nachdem wir die Parameterzuordnung in der SQL-Zuordnungsdatei konfiguriert haben, können wir sie auf die folgenden zwei Arten verwenden:

Verwenden Sie Parameter der Mapper-Schnittstellenmethode

In der Mapper-Schnittstellenmethode können wir einen Parameter definieren, um die in der SQL-Zuordnungsdatei konfigurierten Parameter zu empfangen. Angenommen, wir haben eine UserMapper-Schnittstelle, die eine getUserById-Methode enthält:

public interface UserMapper {
    
    
    User getUserById(@Param("id") int id, @Param("name") String name);
}

In dieser Methode verwenden wir die Annotation @Param, um den Namen des Parameters anzugeben. Dieser Name sollte mit dem Parameternamen in der SQL-Zuordnungsdatei identisch sein, damit MyBatis den Parameter korrekt der SQL-Anweisung zuordnen kann.

Verwendung dynamischer SQL-Tags

Zusätzlich zur Verwendung von Mapper-Schnittstellenmethodenparametern können wir auch dynamische SQL-Tags verwenden, um die Parameterzuordnung in SQL-Zuordnungsdateien zu verwenden. Dynamische SQL-Tags können SQL-Anweisungen entsprechend den Bedingungen dynamisch generieren.

Angenommen, wir haben eine UserMapper-Schnittstelle, die eine getUsersByPage-Methode enthält:

public interface UserMapper {
    
    
    List<User> getUsersByPage(@Param("page") Page page);
}

In dieser Methode verwenden wir die Annotation @Param, um den Namen des Parameters anzugeben. Dann können wir in der SQL-Zuordnungsdatei if-Tags verwenden, um dynamische SQL-Anweisungen basierend auf den Werten der Offset- und Limit-Attribute zu generieren:

<select id="getUsersByPage" resultType="User">
    SELECT * FROM users
    <if test="page.offset != null and page.limit != null">
        LIMIT #{page.offset}, #{page.limit}
    </if>
</select>

In dieser SQL-Zuordnungsdatei verwenden wir das if-Tag, um zu bestimmen, ob der Wert der Offset- und Limit-Attribute leer ist. Wenn keine davon leer ist, wird eine LIMIT-Klausel generiert.

Beispielcode

Das Folgende ist ein Beispielcode einer vollständigen MyBatis SQL-Zuordnungsdatei, einschließlich der Konfiguration und Verwendung der Parameterzuordnung:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.example.UserMapper">

    <typeAliases>
        <typeAlias type="com.example.Page" alias="page" />
    </typeAliases>

    <select id="getUserById" resultType="User">
        SELECT * FROM users WHERE id = #{id} AND name = #{name}
    </select>

    <select id="getUsersByPage" resultType="User">
        SELECT * FROM users
        <if test="page.offset != null and page.limit != null">
            LIMIT #{page.offset}, #{page.limit}
        </if>
    </select>

</mapper>
public class User {
    
    
    private int id;
    private String name;

    // 省略 getter 和 setter 方法
}

public class Page {
    
    
    private int offset;
    private int limit;

    // 省略 getter 和 setter 方法
}

public interface UserMapper {
    
    
    User getUserById(@Param("id") int id, @Param("name") String name);

    List<User> getUsersByPage(@Param("page") Page page);
}

In diesem Beispielcode definieren wir eine User-Klasse und eine Page-Klasse, wobei die User-Klasse ein ID-Attribut und ein Name-Attribut enthält und die Page-Klasse ein Offset-Attribut und ein Limit-Attribut enthält. Anschließend definieren wir eine UserMapper-Schnittstelle, die eine getUserById-Methode und eine getUsersByPage-Methode enthält.

In der SQL-Zuordnungsdatei verwenden wir den Parametertyp-Alias, um einen Seitentyp-Parametertyp-Alias ​​zu definieren. Dann haben wir in der getUserById-Methode #{}-Platzhalter verwendet, um die Parameter id und name darzustellen, und in der getUsersByPage-Methode haben wir das if-Tag verwendet, um dynamische SQL-Anweisungen basierend auf den Werten der Offset- und Limit-Attribute zu generieren.

Zusammenfassen

In MyBatis ist die Parameterzuordnung ein sehr wichtiges Konzept. Durch die Konfiguration der Parameterzuordnung können wir die Eigenschaften des Java-Objekts den Parametern der SQL-Anweisung zuordnen. Wenn die SQL-Anweisung ausgeführt wird, legt MyBatis automatisch den Wert des Parameters auf die SQL-Anweisung fest. In MyBatis kann die Parameterzuordnung über #{}-Platzhalter, ${}-Platzhalter und Parametertyp-Aliase konfiguriert werden. Wenn wir Parameterzuordnungen verwenden, können wir sie mithilfe von Mapper-Schnittstellenmethodenparametern oder dynamischen SQL-Tags verwenden.

Je suppose que tu aimes

Origine blog.csdn.net/2302_77835532/article/details/131654131
conseillé
Classement