根据给定的job、deptno查询符合条件的员工信息
根据给定的多个empno查询员工信息
EmpDao
package dao;
import domain.Dept;
import domain.Emp;
import dynamic.EmpDynamic;
import org.apache.ibatis.annotations.*;
import java.util.List;
public interface EmpDao {
//根据给定的job、deptno查询符合条件的员工信息
//type用于动态拼接方法的类名,method为调用方法名
@SelectProvider(type = EmpDynamic.class,method = "provideSql")//使用默认方法名(一个方法)写法EmpDynamic.class就可以
public List<Emp> selectEmpsByJobAndDeptno(@Param("job")String job,@Param("deptno")Integer deptno);
//根据给定的多个empno查询员工信息
@SelectProvider(type = EmpDynamic.class,method = "provideSql1")
public List<Emp> selectEmpsByEmpno(@Param("empnos")Integer... empnos);
}
EmpDynamic
package dynamic;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public class EmpDynamic {//一个普通方法,用于动态拼接SQL
//类名随意写
//方法名(一个方法时)默认为provideSql(注解找时可省略),自己取的要做特殊告知
public String provideSql(@Param("job")String job,@Param("deptno")Integer deptno){
StringBuilder sb=new StringBuilder();
sb.append("select * from emp where 1 = 1");
if(job!=null&&!"".equals(job)){
sb.append(" and job = #{job}");
}
if(deptno!=null){
sb.append(" and deptno = #{deptno}");
}
return new String(sb);
}
public String provideSql1(@Param("empnos")Integer... empnos){
StringBuilder sb=new StringBuilder();
sb.append("select * from emp where empno in (");
for(Integer empno : empnos){
sb.append(empno+",");
}
sb.delete(sb.length()-1,sb.length());
sb.append(")");
return new String(sb);
}
}