根据给定的job、deptno查询符合条件的员工信息
    根据给定的多个empno查询员工信息
    EmpDao

    1. package dao;
    2. import domain.Dept;
    3. import domain.Emp;
    4. import dynamic.EmpDynamic;
    5. import org.apache.ibatis.annotations.*;
    6. import java.util.List;
    7. public interface EmpDao {
    8. //根据给定的job、deptno查询符合条件的员工信息
    9. //type用于动态拼接方法的类名,method为调用方法名
    10. @SelectProvider(type = EmpDynamic.class,method = "provideSql")//使用默认方法名(一个方法)写法EmpDynamic.class就可以
    11. public List<Emp> selectEmpsByJobAndDeptno(@Param("job")String job,@Param("deptno")Integer deptno);
    12. //根据给定的多个empno查询员工信息
    13. @SelectProvider(type = EmpDynamic.class,method = "provideSql1")
    14. public List<Emp> selectEmpsByEmpno(@Param("empnos")Integer... empnos);
    15. }

    EmpDynamic

    1. package dynamic;
    2. import org.apache.ibatis.annotations.Param;
    3. import java.util.List;
    4. public class EmpDynamic {//一个普通方法,用于动态拼接SQL
    5. //类名随意写
    6. //方法名(一个方法时)默认为provideSql(注解找时可省略),自己取的要做特殊告知
    7. public String provideSql(@Param("job")String job,@Param("deptno")Integer deptno){
    8. StringBuilder sb=new StringBuilder();
    9. sb.append("select * from emp where 1 = 1");
    10. if(job!=null&&!"".equals(job)){
    11. sb.append(" and job = #{job}");
    12. }
    13. if(deptno!=null){
    14. sb.append(" and deptno = #{deptno}");
    15. }
    16. return new String(sb);
    17. }
    18. public String provideSql1(@Param("empnos")Integer... empnos){
    19. StringBuilder sb=new StringBuilder();
    20. sb.append("select * from emp where empno in (");
    21. for(Integer empno : empnos){
    22. sb.append(empno+",");
    23. }
    24. sb.delete(sb.length()-1,sb.length());
    25. sb.append(")");
    26. return new String(sb);
    27. }
    28. }