mybatis的动态sql

一.if和where

举例:根据员工姓名员工的基本工资查询员工信息,如果员工姓名为空,则只根据基本工资查询,如果基本工资为
空,根据员工姓名查询,如果两个条件都为空,查询所有的员工信息。
where标签中的第一个if的and或者or 可以省略,但是之后的条件的and或者or不能省略。

二.choose when otherwise

 

choose when otherwise 和编程语言中的if else是一样的,条件选择

 

if (条件表达式1 ) {

 

语句块;

 

}else if(条件表达式2){

 

语句块;

 

}else if(条件表达式3){

 

语句块;

 

}else{

 

语句块;

 

}

 

举例:根据员工的姓名和基本工资查询员工信息,要求:

 

如果用户传了员工的姓名,则优先按姓名查找,如果没有传递姓名,按基本工资查找,如果两个条件都没有传。查

 

询全部员工的信息。
第一步,在dao接口中声明方法
第二步,在mapper中实现方法

第三步,测试一下 
 

三.foreach

举例:查询员工编号在某集合中的员工的信息。
第一步,在dao接口中声明方法 
第二步,在mapper中实现该方法

第三步,测试
public static void main(String[] args) {
SqlSession session = SqlSessionFactoryUtil.getSession();
EmpDao empDao = session.getMapper(EmpDao.class);
List<Long> empnos = new ArrayList<Long>();
List<Emp> emps = empDao.listByEmpnos(empnos);
for (Emp em :
emps) {
System.out.println("员工编号:"+em.getEmpno());
System.out.println("员工姓名:"+em.getEname());
System.out.println("员工基本工资:"+em.getSal());
// System.out.println("部门名称:"+em.getDept().getDname());
System.out.println("===");
}
session.close();
}

 

posted on 2019-05-19 16:09  不酷也要写代码  阅读(210)  评论(0)    收藏  举报

导航