本文内容基于之前的博客Spring Boot实战小技巧(三):Spring Boot + Mybatis-Plus
Mybatis-Plus自带简单的数据库增删改查函数,但在实际应用中,经常会遇到实现复杂查询或循环添加等操作的需求,需要使用动态sql语句。我们可以在mapper文件,用注解的方式进行动态sql语句的编写,动态sql语句需要添加 <script> </scrpit>
标签 。
1 动态查询条件
当sql语句的查询条件需要满足某种条件才能生效时,我们可以使用if标签和choose标签来实现sql查询条件的动态变化,if标签是与(and)的关系,choose是或(or)的关系。
使用if标签时,只有test条件成立,才会动态添加sql语句。test中的条件需要用\"
括起来。大于号和小于号属于特殊字符,使用时需要用>
和<
代替,示例如下:
@Select({
"<script>",
"select count(*) from tb_person",
"<where>",
"<if test=\"null != param.startTime\">",
"and create_time>=#{param.startTime}",
"</if>",
"<if test=\"null != param.endTime\">",
"and create_time<=#{param.endTime}",
"</if>",
"</where>",
"</script>"
})
int countPersons(@Param("param") ParamEntity param);
choose标签是按顺序判断其内部when标签中的test条件是否成立,如果有一个成立,则choose结束。当choose中所有when的条件都不满则时,则执