一、Mybatis标签有哪些
Mybatis是一种优秀的持久层框架,它主要是对JDBC进行封装,Mybatis的标签可以说是它灵活性的主要体现。Mybatis的标签主要分为两类:CRUD标签和SQL标签。其中,CRUD标签用于增删改查操作,SQL标签用于自定义SQL。下面是Mybatis中主要的标签:
<select></select>
<insert></insert>
<update></update>
<delete></delete>
<if></if>
<choose></choose>
<when></when>
<otherwise></otherwise>
<where></where>
<set></set>
<foreach></foreach>
<bind></bind>
<trim></trim>
<if></if>
<otherwise></otherwise>
二、Mybatis的if标签使用
Mybatis的if标签主要是用于在SQL语句中添加条件判断,用于动态拼接SQL语句。它的使用方法如下:
<select id="findUsers" parameterType="java.util.Map" resultType="User">
select * from user
where 1=1
<if test="username != null">and username like '%${username}%'
上面的代码中,我们通过if标签实现了动态的SQL语句拼接,如果username和email存在,则会将它们作为查询条件动态添加到SQL语句中,如果不存在,则不会添加。
三、Mybatis标签大全
除了if标签之外,Mybatis还提供了很多其他的标签,它们各自的作用也不同,下面是Mybatis标签大全:
- <insert>:插入数据
- <update>:更新数据
- <delete>:删除数据
- <select>:查询数据
- <if>:动态添加SQL语句(上面已经介绍过了)
- <choose></choose>:当多个if的test条件都为false时,才会执行,相当于Java中的switch-case语句
- <when></when>:choose标签下面的if条件,可以有多个when标签
- <otherwise>:choose标签下面所有的if的条件都为false时,就会执行otherwise里面的代码
- <where></where>:在SQL语句中动态添加WHERE关键字(类似于if标签)
- <set></set>:在SQL语句中动态添加SET关键字
- <foreach></foreach>:可以遍历一个集合,并在SQL语句中从这个集合中取值
- <bind></bind>:给OGNL表达式取别名
- <trim></trim>:可以去除SQL语句中的一些不必要的空格或者逗号,类似于Java中的trim()方法
四、Mybatisif标签
除了Mybatis提供的标签之外,我们还可以结合Java的语法,通过if语句来动态拼接SQL语句。
<select id="findUsers" parameterType="java.util.Map" resultType="User">
select * from user
where 1=1
<if test="username != null">and username like '%${username}%'
在上面的代码中,我们结合了Java的if语句来动态拼接SQL语句,如果age不为null,则会加入age的等值判断,否则不会加入。
五、Mybatistrim标签
Mybatistrim标签的作用是去除SQL语句中不必要的空格或者逗号。
<select id="findUsers" parameterType="java.util.Map" resultType="User">
select * from user
<trim prefix="where" prefixOverrides="and |or">
<if test="username != null">
and username like '%${username}%'
</if>
<if test="email != null">
and email like '%${email}%'
</if>
</trim>
</select>
上面的代码中,我们用了<trim prefix="where" prefixOverrides="and |or"></trim>去掉了SQL语句中多余的and或者or关键字。如果username和email存在,则会将它们作为查询条件动态添加到SQL语句中,如果不存在,则不会添加。同时,<trim prefix="where"></trim>中的prefix属性表示在SQL语句中添加WHERE关键字。
六、Mybatis标签
Mybatis标签可以说是Mybatis的精华所在,通过灵活使用标签,可以让我们轻松地编写出动态的SQL语句。下面我们再回顾一下Mybatis中主要使用的标签:
- <if>
- <choose></choose>
- <when></when>
- <otherwise>
- <where></where>
- <set></set>
- <foreach></foreach>
- <bind></bind>
- <trim></trim>
- <if></if>
- <otherwise></otherwise>
七、Mybatis的else标签使用
通过前面的介绍,我们已经知道了Mybatis中常用的标签,现在可以说是轻松理解Mybatiselse标签的作用。Mybatiselse标签主要是在if标签中使用,用于对if条件的反转,效果相当于Java中的else分支,下面的代码展示了如何使用Mybatiselse标签:
<select id="findUsers" parameterType="java.util.Map" resultType="User">
select * from user
<if test="age != null">
<if test="age < 20">
and age < 20
</if>
<if test="age >= 20 and age < 30">
and age >= 20 and age < 30
</if>
<if test="age >= 30">
and age >= 30
</if>
<else>
select * from user
</if>
</select>
在上面的代码中,我们使用了<else></else>标签来实现if条件的反转,如果age不为null,则会按照不同的年龄区间来动态的拼接SQL语句;如果age为null,则会查询全部用户信息。