Mybatis動態SQL(where元素、set元素、if元素)
阿新 • • 發佈:2018-07-05
result 多條 pre users 子元素 per 條件 span fig
Mybatis動態SQL(where元素、set元素、if元素)
- where 元素只會在至少有一個子元素的條件返回 SQL 子句的情況下才去插入“WHERE”子句。而且,若語句的開頭為“AND”或“OR”,where 元素也會將它們去除。
(也就是說where用在有多條if的條件的查詢中,同時會過濾掉語句開頭的AND、OR)
- if 元素可以對給予的對象再進行一次判斷
- set元素可以用於動態包含需要更新的列,而舍去其它的。
1、創建一個用於搜索的動態SQl
(1)、在表對應的配置文件的mapping中加入以下select標簽(那麽它再查找的時候就會先對其元素判空)
1 <select id="search" resultMap="userMap"> 2 select * from usr1 3 <where> 4 <if test="username!=null"> 5 and username=#{username} 6 </if> 7 <if test="password!=null"> 8 and password=#{password}9 </if> 10 </where> 11 </select>
(2)、在主方法中加入以下代碼,(加載相應的配置文件,查詢用戶名為getchar、密碼為1234的用戶是否存在,這種判斷在用戶登錄中往往比較有用)
1 config = Resources.getResourceAsStream("mybatis-config.xml"); 2 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); 3 4 SqlSession session = factory.openSession();5 UserDAO userDAO = session.getMapper(UserDAO.class); 6 User u = new User(); 7 u.setPassword("1234"); 8 u.setUsername("getchar"); 9 List<User> users = userDAO.search(u); 10 System.out.println(users.size()); 11 System.out.println(users);
(3)、這樣實現查詢的時候,就可以實現判斷密碼和賬號是否為空
Mybatis動態SQL(where元素、set元素、if元素)