首页 > 数据库技术 > 详细

Mybatis动态SQL(where元素、set元素、if元素)

时间:2018-07-05 19:34:31      阅读:241      评论:0      收藏:0      [点我收藏+]

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

原文:https://www.cnblogs.com/GetcharZp/p/9269798.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!