以下为xml文件中常用的标签:
SQL标签
<select> : 用于映射查询语句,resultType 属性定义了返回的结果集应该映射到哪种类型的对象。
<select id="selectByName" resultType="com.zzyl.vo.NursingProjectVo">
select id,name from nursing_project where name=#{name}
</select>
<insert> : 用于映射插入语句,keyProperty 属性可以用来指定主键字段,以便 MyBatis 自动填充。
<insert id="addNursingPlan" >
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
select 0
</selectKey>
insert into nursing_plan (plan_name,remark,sort_no,status,create_time,create_by,update_time,update_by)
values (#{planName},#{remark},#{sortNo},#{status},#{createTime},#{createBy},#{updateTime},#{updateBy})
</insert>
<update> : 用于映射更新语句。
<update id="updateStatus">
update nursing_project
set status=#{status}
where id=#{id}
</update>
<delete> : 用于映射删除语句。
<delete id="deleteById">
delete from nursing_project
where id=#{id}
</delete>
动态SQL标签
1、if
if:根据标签中test属性所对应的表达式决定标签中的内容是否需要拼接到SQL中
2、where
where: 当where标签中有内容时,会自动生成where关键字,并且将内容前多余的and 或 or 去掉。
注意 :where标签不能将其中内容后面多余的and或 or去掉
当where标签中没有内容时,此时where标签没有任何效果。
where和if一般结合使用:
a>若where标签中的if条件都不满足,则where标签没有任何功能,即不会添加where关键字
b>若where标签中的if条件满足,则where标签会自动添加where关键字,并将条件最前方多余的and去掉
注意:where标签不能去掉条件最后多余的and
3、trim
-
trim:
- prefix|suffix:将trim标签中内容前面或后面添加指定内容
- suffixOverrides|prefixOverrides:将trim标签中内容前面或后面去掉指定内容
示例:
4、choose、when、otherwise
相当于if...else if ...else...
choose 父标签 when 和 otherwise都需要写在choose标签中,相当于if else if else 的结构
when查询条件 至少有一个
otherwise 如果都不执行最终执行 最多只能有一个
<!--List<Emp> getEmpListByChoose(Emp emp);-->
<select id="getEmpListByChoose" resultType="Emp">
select <include refid="empColumns"></include> from t_emp
<where>
<choose>
<when test="ename != '' and ename != null">
ename = #{ename}
</when>
<when test="age != '' and age != null">
age = #{age}
</when>
<when test="sex != '' and sex != null">
sex = #{sex}
</when>
<when test="email != '' and email != null">
email = #{email}
</when>
</choose>
</where>
</select>
5、foreach
属性:
collection:设置要循环的数组或集合
item:表示集合或数组中的每一个数据
separator:设置循环体之间的分隔符
open:设置foreach标签中的内容的开始符
close:设置foreach标签中的内容的结束符
格式:
使用or分割, or前后不需要空格 ,分隔符前边和后边会自动加上空额
通过数组实现批量删除
通过list集合实现批量添加
这里不能添加open和close 。因为这两个是在循环外加开始符和结束符。如果使用就代表每一次循环都要在外面加上开始符和结束符。
6、sql、include标签
sql片段,可以记录一段公共sql片段,在使用的地方通过include标签进行引入
这个标签的作用是可以模块复用。
# 设置SQL片段
<sql id="empColumns">
eid,ename,age,sex,did
</sql>
# 引用SQL片段
select <include refid="empColumns"></include> from t_emp
7、set标签
update 表 set 列
set标签是用来替换set关键字的,更新时自动拼接set,并去除多余逗号
示例:
8、ResultMap 标签
ResultMap 标签用于描述查询结果集与 Java 对象之间的映射关系。ResultMap 标签有以下属性:
- id:指定 ResultMap 的唯一标识符。
- type:指定映射的 Java 对象类型。
- extends:指定继承的 ResultMap。
- discriminator:用于多表关联查询时进行分组判断。
- constructor、id、result、association、collection:用于定义映射关系。
<resultMap id="userMap" type="User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
</resultMap>
<select id="selectUserById" resultMap="userMap">
select * from user where id = #{id}
</select>