mybatis動態SQL之if標籤
阿新 • • 發佈:2020-10-18
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); } }