Mybatis (4) --- SQL dynamique

Quatre, SQL dynamique

1. SQL dynamique

Le SQL dynamique fait référence au fait que le contenu de l'instruction SQL est modifié et que différentes instructions SQL peuvent être obtenues en fonction des conditions. La
partie principale de l' instruction where est modifiée.

2. La réalisation de SQL dynamique

L'implémentation de SQL dynamique utilise les balises fournies par mybatis, par exemple,

(1) si tag

La balise if sert à juger de la condition.
Syntaxe:

partie de l'instruction sql

<?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="customDAO.TestDao">
    <!--
        <if test="java对象的属性">
    -->
    <select id="selectIf" resultType="customDAO.Test">
        <!--这里加入where 1=1的目的是为了保证语法格式正确-->
        SELECT * FROM t_test WHERE 1=1
        <if test="name != null and name != ''">
            name = #{name}
        </if>
    </select>
</mapper>

(2) où tag

La balise where est utilisée pour contenir plusieurs balises if. Lorsque plusieurs ifs sont établis, la balise where ajoute automatiquement un mot-clé where et supprime les redondants and, or, etc. dans le if

<?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="customDAO.TestDao">
    <!--
        <where标签>
    -->
    <select id="selectIf" resultType="customDAO.Test">
        SELECT * FROM t_test
        <where>
	        <if test="name != null and name != ''">
	            name = #{name}
	        </if>
        </where>
    </select>
</mapper>

(3) pour chaque tag

La balise foreach est utilisée pour boucler le tableau ou la collection de listes en java

Principalement utilisé en SQL dans l'instruction

Par exemple: Trouvez des étudiants dont l'id est 1001, 1002, 1003
select * from t_test where id in (1001,1002,1003);

Deux façons d'utiliser

fichier de mappage sql

<?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="customDAO.TestDao">
    <!--
        foreach的第一种用法:List集合
    -->
    <select id="foreach1" resultType="customDAO.Test">
        SELECT * FROM t_test WHERE id IN
        <!--
            collection:表示接口中方法参数的类型,如果是数组使用array,如果是list集合使用list
            item:自定义的表示数组或集合成员中的变量
            open:循环开始的字符
            close:循环结束时的字符
            separator:集合成员之间的分隔
        -->
        <foreach collection="list" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </select>
    <!--
        foreach的第二种用法
    -->
    <select id="foreach2" resultType="customDAO.Test">
        SELECT * FROM t_test WHERE id IN
        <foreach collection="list" item="test" open="(" close=")" separator=",">
            <!--
                循环对象的某个属性值
            -->
            #{test.id}
        </foreach>
    </select>
</mapper>

Méthodes dans l'interface DAO

import java.util.List;
//定义操作test表的接口
public interface TestDao
{
    
    
    //foreach用法1
    public List<Test> foreach1(List<Integer> idList);
    //foreach用法2
    public List<Test> foreach2(List<Test> test);
}

(4) extrait de code SQL

Objectif: réutiliser certaines phrases

Étape
1. Définissez d'abord l'instruction sql
2. Utilisez la balise include pour importer

fichier de mappage sql

<?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="customDAO.TestDao">
    <!--定义sql的片段-->
    <sql id="mysql">
        SELECT * FROM t_test
    </sql>
    <select id="selectIf" resultType="customDAO.Test">
        <!--SELECT * FROM t_test-->
        <!--使用include导入sql语句-->
        <include refid="mysql"></include>
        <where>
            <if test="name != null and name != ''">
                name = #{name}
            </if>
        </where>
    </select>
</mapper>

Je suppose que tu aimes

Origine blog.csdn.net/weixin_46841376/article/details/114667624
conseillé
Classement