mybatis的动态SQL(一)if标签的使用
来源:互联网 发布:拓展人脉的软件 编辑:程序博客网 时间:2024/05/18 00:43
mybatis的强大特性之一就是动态SQL。我们在写复杂查询的时候,会发现复杂查询包括了各种各样的判断,我们很难一鼓作气的写出完美的查询。动态SQL语句可以帮助我们拼接不同的SQL语句,而已让我们的代码变得更加优雅且功能更加强大。这一篇给大家介绍一下if的用法
下边就是现在MyBatis的动态SQL在XML中支持的几种标签,他们分别是:
- if
- choose
- trim(where、set)
- foreach
bind
if用法
if标签通常用于WHERE语句中,通过判断参数值来决定是否使用某个查询条件, 他也经常用于UPDATE语句中判断是否更新某一个字段,还可以在INSERT语句中用来判断是否插入某个字段的值
where:(我们的项目中模糊查询很多都用到了if,如果模糊条件不为空,则执行模糊查询,如果为空就到此为止)
<select id="FuzzyQueryClassByStrlike" parameterType="java.lang.String" resultType="com.dmsdbj.itoo.basicInfo.entity.ext.DivideClassModel"> select tc.id as classId, tc.class_code as classCode, tc.class_name as className, tc.profession_id as professionId, p.major_name as professionName, p.institution_id as InsititutionId, i.institution_name as InsititutionName from t_class tc inner join t_profession p on tc.profession_id = p.id inner join t_institution i on p.institution_id=i.id <if test="strLike !='' and strLike !=null"> WHERE( tc.class_code LIKE concat('%',#{strLike},'%') OR tc.class_name LIKE concat('%',#{strLike},'%') OR p.major_name LIKE concat('%',#{strLike},'%') OR i.institution_name LIKE concat('%',#{strLike},'%') ) </if>
update(insert同理):如果要更新很多字段,但是一个步骤就可以完成,我们就可以使用if来进行判断,如果这个参数不为空则更新
<update id="updateById" parameterType="com.dmsdbj.itoo.basicInfo.entity.EducationExperienceEntity"> update t_education_experience <set> <if test="remark != null"> remark = #{remark,jdbcType=VARCHAR}, </if> <if test="operator != null"> operator = #{operator,jdbcType=VARCHAR}, </if> <if test="endDate != null"> end_date = #{endDate,jdbcType=DATE}, </if> <if test="schoolName != null"> school_name = #{schoolName,jdbcType=VARCHAR}, </if> <if test="startDate != null"> start_date = #{startDate,jdbcType=DATE}, </if> <if test="teacherName != null"> teacher_name = #{teacherName,jdbcType=VARCHAR}, </if> <if test="studentId != null"> student_id = #{studentId,jdbcType=VARCHAR}, </if> <if test="isDelete != null"> is_delete = #{isDelete,jdbcType=TINYINT}, </if> <if test="education != null"> education = #{education,jdbcType=VARCHAR}, </if> <if test="createTime != null"> create_time = #{createTime,jdbcType=TIMESTAMP}, </if> <if test="updateTime != null"> update_time = #{updateTime,jdbcType=TIMESTAMP}, </if> </set> where id = #{id,jdbcType=VARCHAR} and is_delete = 0 </update>
注意:
if标签中有一个test属性,test属性值是一个符合OGNL要求的判断表达式,表达式的结果可以使true或者false,除此之外所有的非0值都为true
阅读全文
0 0
- mybatis的动态SQL(一)if标签的使用
- mybatis 之 动态sql(一)choose标签的使用
- Mybatis中动态SQL(if,where,foreach 的使用)
- Mybatis中动态SQL(if,where,foreach 的使用)
- MyBatis--动态SQL---if标签
- MyBatis动态SQL之一使用 if 标签和 choose标签
- MyBatis动态SQL之一使用 if 标签和 choose标签
- MyBatis动态SQL<choose>标签的使用
- MyBatis动态SQL set标签的使用
- mybatis的动态SQL(二)choose标签的使用
- mybatis的动态sql标签
- mybatis的动态sql标签
- Mybatis的动态sql标签
- myBatis的动态SQL之标签的使用
- MyBatis动态SQL中trim标签的使用
- MyBatis动态SQL中trim标签的使用参数
- mybatis动态sql中的trim标签的使用
- mybatis动态sql中的trim标签的使用
- dubbo入门
- 常见数据类型的克隆(内含对象的深度克隆)
- wsdl加入header部分
- textview加矩形边框和圆角边框
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 Minimum Distance in a Star Graph
- mybatis的动态SQL(一)if标签的使用
- 数据库中的事务隔离级别和锁的关系
- 如何设置USB为第一引导
- 前端loading
- 高软作业lab1
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 I GSM Base Station Identification(暴力,计算几何)
- 重温TCP-IP学习笔记- 2/3
- 花瓣导航栏
- context