集团站切换校区

验证码已发送,请查收短信

图标

学习文章

当前位置:首页 > >学习文章 > >

{MyBatyis}动态sql之where trim

发布时间: 2018-09-26 16:16:06

​语句的作用主要是简化SQL语句中where中的条件判断的;

List<Stu> getWhere(Stu stu);



<select id="getWhere" resultType="net.togogo.bean.Stu">

   select * from t_stu

   <where>

       <if test="name!=null">

           name = #{name}

       </if>

   </where>

</select>


@Test

public void getWhere(){

   SqlSession session = sessionFactory.openSession();

   Stu stu = new Stu();

   stu.setName("张飞");

   List<Stu> stus =

session.selectList("net.togogo.mapper.StuMapper.getWhere",stu);

   stus.stream().forEach(System.out::println);

   session.close();

}

where元素的作用是会在写入where元素的地方输出一个where,另外一个好处是你不需要考虑where元素里面的条件输出是什么样子的,MyBatis会智能的帮你处理,如果所有的条件都不满足那么MyBatis就会查出所有的记录,如果输出后是and

开头的,MyBatis会把第一个and忽略,当然如果是or开头的,MyBatis也会把它忽略;此外,在where元素中你不需要考虑空格的问题,MyBatis会智能的帮你加上。像上述例子中,如果title=null, 而content != null,那么输出的整个语句会是select * from t_blog where content = #{content},而不是select * from t_blog where and content =

#{content},因为MyBatis会智能的把首个and 或 or 给忽略。


trim:元素的主要功能是可以在自己包含的内容前加上某些前缀,也可以在其后加上某些后缀,与之对应的属性是prefix和suffix;可以把包含内容的首部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是prefixOverrides和suffixOverrides;正因为trim有这样的功能,所以我们也可以非常简单的利用trim来代替where元素的功能​;

List<Stu> getTrim(Stu stu);

<select id="getTrim" resultType="net.togogo.bean.Stu">

   select * from t_stu

   <trim prefix="where" prefixOverrides="and|or" suffix="">

       <if test="name!=null">

           and name = #{name}

       </if>

       <if test="id!=0">

           and id =#{id}

       </if>

   </trim>

</select>


@Test


public void getTrim(){

   SqlSession session = sessionFactory.openSession();

   Stu stu = new Stu();

   stu.setName("张飞");

   stu.setId(1);

   List<Stu> stus =

session.selectList("net.togogo.mapper.StuMapper.getTrim",stu);

   stus.stream().forEach(System.out::println);

   session.close();

}




上一篇: {Gitee}版本控制工具

下一篇: {HTML5}基础核心-第二节-下

十年老品牌
QQ咨询:450959328 微信咨询:togogozhong 咨询电话:020-38289118 咨询网站客服:在线客服

相关课程推荐

在线咨询 ×

您好,请问有什么可以帮您?我们将竭诚提供最优质服务!