1. 程式人生 > >Mybatis動態SQL(where元素、set元素、if元素)

Mybatis動態SQL(where元素、set元素、if元素)

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元素)