package com.itheima.mapper;
import com.itheima.pojo.Emp;
import org.apache.ibatis.annotations.*;
import java.time.LocalDate;
import java.util.List;
@Mapper //在运行时,会自动生成该接口的实现类对象(代理对象),并且将该对象交给IOC容器管理
public interface EmpMapper {
//根据ID删除数据
//#:占位符;#{id}:动态把id传进去,id不是固定
//注意事项:如果mapper接口方法形参只有一个普通类型的参数,#{...}里面的属性名可以随便写,如:#{id},#{value}
//List<Emp>:需要返回多条查询结果
//条件查询员工(名字带张的男性,且入职时间在2020-01-01到2022-01-01之间,最后根据更新时间进行倒序排序
// "select * from emp where name like '%张%' and gender =1 and" +
// "entrydate between '2020-01-01' and '2022-01-01' order by update_time desc "
// 方式1:使用${},但是${}里面的内容会直接拼接在sql语句中,如果${}里面的内容是变量,那么${}里面的内容会变成字符串,
//'%#{name}%':里面的内容会变成字符串,但是字符串不能放在单引号之中;
// 使用$符可能会导致sql语句注入,消耗低,不安全(均不是最优解),可以使用concat字符串拼接函数
// @Select("select * from emp where name like '%${name}%' and gender =#{gender} and " +
// "entrydate between #{begin} and #{end} order by update_time desc ")
//方式2
// @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);
//方式3:使用xml配置文件
public List<Emp> list(String name, Short gender, LocalDate begin,LocalDate end);
}
<!--xml映射文件-->
<?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.itheima.mapper.EmpMapper">
<!--id名称需要与mapper接口方法名一致-->
<!--resultType:指定查询结果封装成哪个Java类型-->
<select id="list" resultType="com.itheima.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>