mybatis動態SQL之if標簽


mybatis動態SQL之if標簽

我們根據實體類的不同取值,使用不同的 SQL 語句來進行查詢。比如在 id 如果不為空時可以根據 id 查詢,如果 username 不同空時還要加入用戶名作為條件。這種情況在我們的多條件組合查詢中經常會碰到。

1、持久層接口

/**
* 根據用戶信息,查詢用戶列表
* @param user
* @return
*/
List<User> findByUser(User user);

2、映射配置

<!--參數類型和返回值結果類型使用了別名-->
<select id="findByUser" resultType="user" parameterType="user">
    select * from user where 1=1
    <if test="username!=null and username != '' ">
   	 and username like #{username}
    </if> 
    <if test="address != null">
    	and address like #{address}
    </if>
</select>

注意:if標簽的 test 屬性中寫的是對象的屬性名,如果是包裝類的對象要使用 OGNL 表達式的寫法。另外要注意 where 1=1 的作用~!

3、測試

@Test
public void testFindByUser() {
    User u = new User();
    u.setUsername("%王%");
    u.setAddress("%順義%");
    //6.執行操作
    List<User> users = userDao.findByUser(u);
    for(User user : users) {
    System.out.println(user);
	} 
}


免責聲明!

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



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