1. 程式人生 > 實用技巧 >mybatis動態SQL之if標籤

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);
	} 
}