- 一般情况下, 简单的SQL用注解, 复杂的SQL用xml映射. 灵活使用切换
- 插件. MyBatisX, 用于跳转等功能,在Mappper接口的方法中Alt+回车可生成xml
- 注解方式

- 使用xml的方式

代码
@Test
public void testCheck()
{
List<Emp> emp = empMapper.checkXml("张", (short)1, LocalDate.of(2000, 1, 1), LocalDate.of(2030, 1, 1));
System.out.println(emp);
}
public List<Emp> checkXml(String name, Short gender, LocalDate begin, LocalDate end);
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.emp01.mapper.EmpMapper">
<select id="checkXml" resultType="com.emp01.pojo.Emp">
select * from emp where name like concat('%', #{name}, '%') and gender = #{gender} and entrydate between #{begin} and #{end} order by update_time desc
</select>
</mapper>

动态SQL标签:
<if></if>
<where></where>
<foreach></foreach>
<sql></sql>
<include></include>
1.改造查询语句: 当name,gender等搜索条件无值时, 传入 name = null 会导致查询不到信息
<select id="checkXml" resultType="com.emp01.pojo.Emp">
select *
from emp
where name like concat('%', #{name}, '%')
and gender = #{gender}
and entrydate between #{begin} and #{end}
order by update_time desc
</select>
<mapper namespace="com.emp01.mapper.EmpMapper">
<select id="checkXml" resultType="com.emp01.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>
</mapper>
2.改造更新语句: 当更新传入的image,gender,job,dept_id没传值时,会导致数据被更新为null
@Test
public void testUpdate()
{
Emp emp = new Emp();
emp.setId(6);
emp.setUsername("Tom1");
emp.setName("Tom1");
empMapper.update(emp);
}
@Update("UPDATE `emp` SET `username`= #{username}, `password`= #{password}, `name`= #{name}, `gender`= #{gender}, `image`= #{image}, `job`= #{job}, `entrydate`= #{entrydate}, `dept_id`= #{deptId} WHERE `id`= #{id}")
public void update(Emp emp);
<update id="updateNew" >
update emp
<set>
<if test="username != null"> username = #{username},</if>
<if test="name != null"> name = #{name},</if>
<if test="gender != null"> gender = #{gender},</if>
<if test="image != null"> image = #{image},</if>
<if test="job != null"> job = #{job},</if>
<if test="entrydate != null"> entrydate = #{entrydate},</if>
<if test="deptId != null"> dept_id = #{deptId},</if>
<if test="updateTime != null"> update_time = #{update_time},</if>
</set>
where id = #{id}
</update>
public void deleteByIds(List<Integer> ids);
@Test
public void testDel()
{
List<Integer> ids = Arrays.asList(7,8,9);
empMapper.deleteByIds(ids);
}
<delete id="deleteByIds">
delete from emp where id in
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</delete>
