Mybatis之動態SQL&OGNL表達式


1.接口

public interface MemberMapperDynamicSQL {

    public List<Members> selectMembersByIf(Members member);

}

2.配置文件

<mapper namespace="com.dao.MemberMapperDynamicSQL">

    <!-- 
        OGNL表達式
        &的轉義字符為 &amp;
        '的轉義字符為 &quot;
     -->
    <select id="selectMembersByIf" resultType="members">
    
        select * from members where 1 = 1
        
        <if test="id != null &amp;&amp; id != &quot;&quot;">
            and id = #{id}
        </if>
        
        <if test="member_name != null &amp;&amp; member_name != &quot;&quot;">
            and member_name like #{member_name}
        </if>
        
    </select>

</mapper>

3.測試

    public static void main(String[] args) throws IOException {
        SqlSession session = getSqlSession();
        try {
            // 面向接口方式
            MemberMapperDynamicSQL mapper = session.getMapper(MemberMapperDynamicSQL.class);
            Members member = new Members();
//            member.setId(1);
//            member.setMember_name("%雲%");
            List<Members> list = mapper.selectMembersByIf(member);
            System.out.println(list);
            session.commit();
        } finally {
            // 關閉session
            session.close();
        }
    }

4.在全局配置文件中加入log打印日志

    <settings>  
        <setting name="logImpl" value="STDOUT_LOGGING"/>  
    </settings>

5.打印結果

==>  Preparing: select * from members where 1 = 1 
==> Parameters: 
<==    Columns: id, member_name, pass_word, age
<==        Row: 1, 張三, 123456, 25
<==        Row: 2, 李四, 123456, 25
<==        Row: 3, 關雲長, 123456, 54
<==        Row: 4, 關雲長, 123456, 54
<==      Total: 4
[Member [id=1, member_name=張三, password=123456, age=25], Member [id=2, member_name=李四, password=123456, age=25], Member [id=3, member_name=關雲長, password=123456, age=54], Member [id=4, member_name=關雲長, password=123456, age=54]]

條件成立則拼接相應的條件,不成立則不拼接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM