mybatis中的where

摘要:
在多个查询条件下,因为SQL语句需要拼接,其中1=1 selected、name、gender、emailfrompwhere 1=1<将添加到它们前面;iftest=“id!=nulland!=''”>andid=#{id}</如果>&书信电报;iftest=“name!=nullandname!=''”>andname=#{name}</如果&gt

在多个查询条件下,由于需要拼接sql语句,所以会在前面加上 where 1 = 1

   select id,name,gender,email from emp
        where 1 = 1
            <if test="id != null and id != ''">
                 and id =  #{id}
            </if>
           <if test="name != null and name != ''">
                and name = #{name}
           </if>
    </select>

 可以使用<where></where>代替:

 select id,name,gender,email from emp
       <where>
           <if test="id != null and id != ''">
               and id = #{id}
           </if>
           <if test="name != null and name != ''">
               and name = #{name}
           </if>
       </where>

还可以使用<trim></trim>代替:

trim标签:

1》prefix="":前缀:trim标签体中是整个字符串拼串 后的结果,prefix给拼串后的整个字符串加一个前缀
2》prefixOverrides="":前缀覆盖: 去掉整个字符串前面多余的字符
3》suffix="":后缀,suffix给拼串后的整个字符串加一个后缀
4》suffixOverrides=""后缀覆盖:去掉整个字符串后面多余的字符

  select id,name,gender,email from emp
       <trim prefix="where" prefixOverrides="and">
           <if test="id != null and id != ''">
               and id =  #{id}
           </if>
           <if test="name != null and name != ''">
               and name = #{name}
           </if>
       </trim>

免责声明:文章转载自《mybatis中的where》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MSDE 2000 安装参数ansible 基础下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MyBatis(缓存机制)

缓存可以极大的提升查询效率。 MyBatis系统中默认定义两级缓存(一级缓存和二级缓存)。 一、两级缓存 1、一级缓存:(本地缓存):sqlSession级别的缓存。一级缓存是一直开启的;sqlSession级别的一个Map。   与数据库同一次会话期间查询到的数据会放在本地缓存中   以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库;...

mybatis之动态SQL操作之更新

1) 更新条件不确定,需要根据情况产生SQL语法,这种情况叫动态SQL /** * 持久层*/ public classStudentDao { /** * 动态SQL--更新 */ public void dynaSQLwithUpdate(Student student) throwsException{...

mybatis自定义join和模糊查询

关于mybatis通过和数据库连接生成的map.xml不能满足我们的查询条件的时候,我们要做的就是自定义一个查询的功能。 (1)需要在生成的xml文件当中添加我们想要join的两张表的字段信息。 <resultMap id="queryForListMap" type="com.report.pojo.RuleRunResult">...

MyBatis空where拦截器

最近项目中出现了至少两次因为Mybatis的动态where条件不满足导致实际sql语句的where条件为空,进而查询全表,当数据量比较大的时候,导致OOM的情况. 如何禁止这种情况,个人觉得三种措施: 1.在逻辑层面加充分的参数有效性检查; 2.在where条件中如果索引条件都不满足,加上1=2这种必然失败的条件; 3.Mybatis拦截器; 前两种...

mybatis 详解(九)------ 一级缓存、二级缓存

上一章节,我们讲解了通过mybatis的懒加载来提高查询效率,那么除了懒加载,还有什么方法能提高查询效率呢?这就是我们本章讲的缓存。   本篇源码下载链接:http://pan.baidu.com/s/1eRHTsIm 密码:a5wn   mybatis 为我们提供了一级缓存和二级缓存,可以通过下图来理解:      ①、一级缓存是SqlSession级别...

使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件

出处:http://www.cnblogs.com/lichenwei/p/4145696.html Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件。 1、相关文件 关于Mybatis-Generator的下载可以到这...