发布时间: 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}基础核心-第二节-下