细心的读者可能会发现,我们在《MyBatis choose、when和otherwise语句》一节的 SQL 语句中加入了一个条件“1=1”,如果没有加入这个条件,那么可能就会变成下面这样一条错误的语句。
显然以上语句会出现 SQL 语法异常,但加入“1=1”这样的条件又非常奇怪,所以 MyBatis 提供了 where 标签。
where 标签主要用来简化 SQL 语句中的条件判断,可以自动处理 AND/OR 条件,语法如下。
if 语句中判断条件为 true 时,where 关键字才会加入到组装的 SQL 里面,否则就不加入。where 会检索语句,它会将 where 后的第一个 SQL 条件语句的 AND 或者 OR 关键词去掉。
示例
要求:根据网站名称或网址对网站进行模糊查询(本节示例基于《第一个MyBatis程序》一节的代码实现)。
WebsiteMapper.xml 代码如下。
- <select id="selectWebsite" resultType="net.biancheng.po.Website">
 -     select id,name,url from website
 -     <where>
 -         <if test="name != null">
 -             AND name like #{name}
 -         </if>
 -         <if test="url!= null">
 -             AND url like #{url}
 -         </if>
 -     </where>
 - </select>
 
WebsiteMapper 类中方法如下。
测试类代码如下。
- public class Test {
 -     public static void main(String[] args) throws IOException {
 -         // 读取配置文件mybatis-config.xml
 -         InputStream config = Resources.getResourceAsStream("mybatis-config.xml"); // 根据配置文件构建
 -         SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
 -         // 通过SqlSessionFactory创建SqlSession
 -         SqlSession ss = ssf.openSession();
 -         Website site = new Website();
 -         site.setname("编程");
 -         List<Website> siteList = ss.selectList("net.biancheng.mapper.WebsiteMapper.selectWebsite", site);
 -         for (Website ws : siteList) {
 -             System.out.println(ws);
 -         }
 -     }
 - }
 
输出结果如下。
DEBUG [main] - ==>  Preparing: SELECT id,name,url,age,country FROM website WHERE  name LIKE CONCAT('%',?,'%')
DEBUG [main] - ==> Parameters: 编程(String)
DEBUG [main] - <==      Total: 1
Website[id=1,name=编程帮,url=https://www.biancheng.net/,age=10,country=CN]
                            郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
                        
                        
                            本文链接:https://www.jhelp.net/p/pDOshsKf24ff9Z6l (转载请保留)。
                        
                    
                            关注下面的标签,发现更多相似文章
                        
                        
                    本站推荐
- 
                                    
                                    1071
 - 
                                    
                                    1064
 - 
                                    
                                    995
 - 
                                    
                                    991
 - 
                                    
                                    989
 
文章目录
                        
                    