一. 知识储备
EmployeeMapperDynamicSQL.java
package com.atguigu.mybatis.dao;
import java.util.List;
import com.atguigu.mybatis.beans.Employee;
public interface EmployeeMapperDynamicSQL {
public List<Employee> selectEmployeeByConditionTrim(Employee Condition);
}
EmployeeMapperDynamicSQL.xml
<!-- public List<Employee> selectEmployeeByConditionTrim(Employee Condition); -->
<select id="selectEmployeeByConditionTrim" resultType="com.atguigu.mybatis.beans.Employee">
select id, last_name, email, gender from tbl_employee
<!--
prefix: 添加一个前缀
prefixOverrides: 去掉一个前缀
suffix: 添加一个后缀
suffixOverrides: 去掉一个后缀
-->
<trim prefix="where" suffixOverrides="and|or">
<if test="id!=null">
id = #{id} and
</if>
<if test="lastName!=null && lastName!=""">
last_name = #{lastName} and
</if>
<if test="email!=null and email.trim()!=''">
email = #{email} or
</if>
<if test="gender==0 or gender==1">
gender = #{gender}
</if>
</trim>
</select>
TestMyBatisDynamicSQL.java
@Test
public void testTrim() throws Exception{
SqlSessionFactory ssf = getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
EmployeeMapperDynamicSQL mapper = session.getMapper(EmployeeMapperDynamicSQL.class);
Employee condition = new Employee();
// condition.setId(1001);
condition.setLastName("刚哥");
// condition.setEmail("gg@sina.com");
// condition.setGender("1");
List<Employee> emps = mapper.selectEmployeeByConditionTrim(condition);
System.out.println(emps);
session.commit();
} finally {
// TODO: handle finally clause
session.close();
}
}