packagecom.itheima.mapper;importcom.itheima.pojo.User;importorg.apache.ibatis.annotations.Mapper;importorg.apache.ibatis.annotations.Select;importjava.util.List;@Mapper//在运行时,会自动生成该接口的实现类对象(代理对象), 并且将该对象交给IOC容器管理publicinterfaceUserMapper{//查询全部用户信息@Select("select * from user")publicList<User>list();}
packagecom.itheima.mapper;importcom.itheima.pojo.Emp;importorg.apache.ibatis.annotations.*;importjava.time.LocalDate;importjava.util.List;@MapperpublicinterfaceEmpMapper{//根据ID删除数据@Delete("delete from emp where id = #{id}")publicvoiddelete(Integer id);//public int delete(Integer id);//新增员工@Options(useGeneratedKeys =true, keyProperty ="id")@Insert("insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time)"+" values (#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime})")publicvoidinsert(Emp emp);//更新员工@Update("update emp set username = #{username}, name = #{name}, gender = #{gender}, image = #{image},"+" job = #{job}, entrydate = #{entrydate}, dept_id = #{deptId},update_time = #{updateTime} where id = #{id}")publicvoidupdate(Emp emp);//方案三: 开启mybatis的驼峰命名自动映射开关 --- a_cloumn ------> aColumn//根据ID查询员工@Select("select * from emp where id = #{id}")publicEmpgetById(Integer id);//解决表中字段与实体类属性名不一致的方案://方案一: 给字段起别名, 让别名与实体类属性一致//@Select("select id, username, password, name, gender, image, job, entrydate, " +// "dept_id deptId, create_time createTime, update_time updateTime from emp where id = #{id}")//public Emp getById(Integer id);//方案二: 通过@Results, @Result注解手动映射封装//@Results({// @Result(column = "dept_id", property = "deptId"),// @Result(column = "create_time", property = "createTime"),// @Result(column = "update_time", property = "updateTime")//})//@Select("select * from emp where id = #{id}")//public Emp getById(Integer id);//条件查询员工//方式一//@Select("select * from emp where name like '%${name}%' and gender = #{gender} and " +// "entrydate between #{begin} and #{end} order by update_time desc ")//public List<Emp> list(String name, Short gender, LocalDate begin , LocalDate end);//方式二// @Select("select * from emp where name like concat('%',#{name},'%') and gender = #{gender} and " +// "entrydate between #{begin} and #{end} order by update_time desc ")// public List<Emp> list(String name, Short gender, LocalDate begin , LocalDate end);//动态条件查询publicList<Emp>list(String name,Short gender,LocalDate begin,LocalDate end);//动态更新员工publicvoidupdate2(Emp emp);//批量删除员工publicvoiddeleteByIds(List<Integer> ids);}
EmpMapper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.itheima.mapper.EmpMapper"><sqlid="commonSelect">
select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time
from emp
</sql><!-- 动态更新员工--><updateid="update2">
update emp
<set><iftest="username != null">username = #{username},</if><iftest="name != null">name = #{name},</if><iftest="gender != null">gender = #{gender},</if><iftest="image != null">image = #{image},</if><iftest="job != null">job = #{job},</if><iftest="entrydate != null">entrydate = #{entrydate},</if><iftest="deptId != null">dept_id = #{deptId},</if><iftest="updateTime != null">update_time = #{updateTime}</if></set>
where id = #{id}
</update><!--resultType: 单条记录封装的类型--><selectid="list"resultType="com.itheima.pojo.Emp"><includerefid="commonSelect"/><where><iftest="name != null">
name like concat('%', #{name}, '%')
</if><iftest="gender != null">
and gender = #{gender}
</if><iftest="begin != null and end != null">
and entrydate between #{begin} and #{end}
</if></where>
order by update_time desc
</select><!--批量删除员工 (18,19,20)--><!--
collection: 遍历的集合
item: 遍历出来的元素
separator: 分隔符
open: 遍历开始前拼接的SQL片段
close: 遍历结束后拼接的SQL片段
--><deleteid="deleteByIds">
delete from emp where id in
<foreachcollection="ids"item="id"separator=","open="("close=")">
#{id}
</foreach></delete></mapper>