Emp
package domain;
import java.sql.Date;
public class Emp {
//自有属性
private Integer empno;
private String ename;
private String job;
private Integer mgr;
private Date hiredate;
private Float sal;
private Float comm;
//为了通过员工 查询员工对应的部门信息 关联属性
private Dept dept;//(deptno dname loc)
public Emp() {
}
public Emp(Integer empno, String ename, String job, Integer mgr, Date hiredate, Float sal, Float comm, Dept dept) {
this.empno = empno;
this.ename = ename;
this.job = job;
this.mgr = mgr;
this.hiredate = hiredate;
this.sal = sal;
this.comm = comm;
this.dept = dept;
}
@Override
public String toString() {
return "Emp{" +
"empno=" + empno +
", ename='" + ename + '\'' +
", job='" + job + '\'' +
", mgr=" + mgr +
", hiredate=" + hiredate +
", sal=" + sal +
", comm=" + comm +
", dept=" + dept +
'}';
}
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Integer getMgr() {
return mgr;
}
public void setMgr(Integer mgr) {
this.mgr = mgr;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public Float getSal() {
return sal;
}
public void setSal(Float sal) {
this.sal = sal;
}
public Float getComm() {
return comm;
}
public void setComm(Float comm) {
this.comm = comm;
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
}
EmpDynamic
package dynamic;
import org.apache.ibatis.annotations.Param;
public class EmpDynamic {
//类名随意写
//方法名 类中只有一个方法 如果使用默认方法名 以后注解找的时候可以省略
// provideSql(使用默认的 找寻时可以省略)
//方法名 自己随意写的也可以 找寻的时候需要告知具体哪个方法
//一个普通方法 目的自己动态拼接SQL
// 参数? job deptno
// 返回值? SQL
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 sb.toString();
}
//一个普通方法 目的是自己动态拼接SQL
// 参数 数组 集合 empnos
// 返回值String
public String getDynamicSQL(@Param("empnos")Integer...empnos){
StringBuilder sb = new StringBuilder();
sb.append("select * from emp where empno in ");
sb.append("(");//open="("
for(int i=0;i<empnos.length;i++){
sb.append(empnos[i]);
sb.append(",");// separator=","
}
sb.delete(sb.length()-1,sb.length());//多余的,删掉
sb.append(")");//close=")"
return sb.toString();
}
}
EmpDao
package dao;
import domain.Dept;
import domain.Emp;
import dynamic.EmpDynamic;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.mapping.FetchType;
import java.util.List;
public interface EmpDao {
// //设计一个方法 根据员工empno编号 查询员工信息+所属部门信息
// @Results(
// id="selectEmp",
// value={
// @Result(property="empno",column="empno",id=true),
// @Result(property="ename",column="ename"),
// @Result(property="job",column="job"),
// @Result(property="mgr",column="mgr"),
// @Result(property="hiredate",column="hiredate"),
// @Result(property="sal",column="sal"),
// @Result(property="comm",column="comm"),
// @Result(property="dept",javaType=Dept.class,column="deptno",one=@One(select="selectDept",fetchType=FetchType.LAZY))
// })
// @Select("select * from emp where empno = #{empno}")
// public Emp selectOne(Integer empno);
//
// //辅助方法
// @Select("select * from dept where deptno = #{deptno}")
// public Dept selectDept(Integer deptno);
//====================================================
//查询所有的emp信息+每个emp对应的dept对象
// @Select("select * from emp")
// @ResultMap("selectEmp")
// public List<Emp> selectAll();
//====================================================
//支持动态SQL的方法 代理处理
//根据给定的job和deptno查询好多人 job和deptno不一定有没有
@Select("动态---找别人拼接完成拿回来")
@SelectProvider(EmpDynamic.class)
public List<Emp> selectEmpsByJobAndDeptno(@Param("job")String job,@Param("deptno")Integer deptno);
//根据给定的empno查询好多人 empno不一定有几个
@SelectProvider(type=EmpDynamic.class,method="getDynamicSQL")
public List<Emp> selectEmpsByEmpno(@Param("empnos")Integer... empnos);
}
网友评论