智能标签if-where和智能标签choose(when , otherwise)
接口:
/**
* 智能标签if
* @param student
* @return
*/
public List<Student> findByIf(Student student);
/**
* 智能标签choose
* @param student
* @return
*/
public List<Student> findByChoose(Student student);
xml文件(小配置)
<!--智能标签if-->
<select id="findByIf" resultType="student">
SELECT *from Student
<where>
<if test="name!=null">
AND name LIKE '%' #{name } '%'
</if>
<if test="age!=null">
AND age>#{age}
</if>
</where>
</select>
<!--智能标签choose-->
<select id="findByChoose" resultType="student">
SELECT *from Student
<where>
<choose>
<when test="name!=null">
AND name LIKE '%' #{name } '%'
</when>
<when test="age">
AND age>#{age}
</when>
<otherwise>
1=1
</otherwise>
</choose>
</where>
</select>
测试类:
/**
* 智能标签if
*/
@Test
public void findByIf(){
SqlSession session = MyBatisUtil.getSession();
IStudentDAO mapper = session.getMapper(IStudentDAO.class);
Student student=new Student();
//student.setName("张");
student.setAge(20);
List<Student> list = mapper.findByIf(student);
for (Student item:list){
System.out.println(item.getName());
}
session.commit();
session.close();
}
/**
* 智能标签choose
*/
@Test
public void findByChoose(){
SqlSession session = MyBatisUtil.getSession();
IStudentDAO mapper = session.getMapper(IStudentDAO.class);
Student student=new Student();
//student.setName("张");
//student.setAge(20);
List<Student> list = mapper.findByChoose(student);
for (Student item:list){
System.out.println(item.getName());
}
session.commit();
session.close();
}