此章节为mybatis的学习笔记
Mybatis连接的四要素和日志及驼峰命名的映射开关
XML映射文件
1.映射配置文件名与Mapper接口一致,且放在相同的包下(同包同名)。
2.映射配置文件的namespace属性与Mapper接口的全类名一致。
3.XML映射文件中SQL语句的id与Mapper接口的方法名一致。
Mybatis动态SQL配置xml文件
1.<if>
<if test = '条件表达式'>
要拼接的sql语句
</if>
用于判断条件是否成立。
使用test属性来进行条件判断,如果条件为true,则拼接SQL语句。
2.<where>
<where> (元素)
内容(子元素)
</where>
where元素只会在子元素有内容的情况下才会插入where字句。
会自动去除子句的and或者or。
<select id="list" resultType="com.itheima.pojo.Emp">
select *
from emp
<where>
<if test="name != null">
name like concat('%', #{name}, '%')
</if>
<if test="gender != null">
and gender = #{gender}
</if>
<if test="begin != null and end != null">
and entrydate between #{begin} and #{end}
</if>
</where>
order by update_time desc
</select>
3.<set>
<set> (元素)
内容(子元素)去除条件的逗号分隔
</set>
(用在update中) set元素只会在子元素有内容的情况下才会插入set字句。
会自动去除子句的[,]逗号。
<update id="update2">
update emp
<set>
<if test="username != null">username = #{username},</if>
<if test="name != null">name = #{name},</if>
where id = #{id}
</set>
</update>
4.<foreach>
collection:遍历出来的集合
item:遍历出来的元素
separator:分隔符
open:遍历开始时的SQL片段
close:遍历结束时的SQL片段
<delete id="deleteByIds">
delete from emp where id in
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</delete>
5.<sql>
<sql id = "定义名字">
定义可重复的SQL片段
</sql>
如查询select的字段,我们可以重复抽取代码片段通过<sql>标签整合在用<include>标签进行引用
<sql id="commonSelect">
select id,username,password,name,gender,image,job,entrydate,dept_id,create_time,update_time
from emp
</sql>
6.<include>
<include refid = "<sql>标签定义的id名字"/>
通过属性refid 调取之前<sql>的抽取的地方进行引用
指定包含的SQL片段
<select id="list" resultType="com.itheima.pojo.Emp">
<include refid="commonSelect"/>
where
<if test="name != null">
name like concat('%', #{name}, '%')
</if>
order by update_time desc
</select>