单次判断,就是只进行一次判断。
一、编辑接口文件
import java.util.List; import org.apache.ibatis.annotations.Param; import com.mybatis.bean.Employee; public interface EmployeeMapperDynamicSQL { public List<Employee> getEmpsByConditionChoose(Employee employee); }
二、编辑SQL映射文件
<!-- public List<Employee> getEmpsByConditionChoose(Employee employee); --> <select id="getEmpsByConditionChoose" resultType="com.mybatis.bean.Employee"> select * from tbl_employee <where> <!-- 如果带了id就用id查,如果带了lastName就用lastName查;只会进入其中一个 --> <choose> <when test="id!=null"> id=#{id} </when> <when test="lastName!=null"> last_name like #{lastName} </when> <when test="email!=null"> email = #{email} </when> <otherwise> gender = 0 </otherwise> </choose> </where> </select>
三、Junit单元测试
EmployeeMapperDynamicSQL mapper = openSession.getMapper(EmployeeMapperDynamicSQL.class); Employee employee = new Employee(3,"%m%","[email protected]","2"); List<Employee> list = mapper.getEmpsByConditionChoose(employee); for(Employee emp :list){ System.out.println(emp); System.out.println(emp.getDepartment()); }