MyBatis的动态sql_set与if结合的动态更新
EmployeeMapperDynamicSQL.java
package com.cn.mybatis.dao;
import java.util.List;
import com.cn.zhu.bean.Employee;
public interface EmployeeMapperDynamicSQL {
//<!-- 查询员工,要求,携带了哪个字段查询条件就带上这个字段的值 -->
public List<Employee> getEmpsByConditionIf(Employee employee);
//测试trim截取字符串
public List<Employee> getEmpsByConditionTrim(Employee employee);
// 测试choose
public List<Employee> getEmpsByConditionChose(Employee employee);
public void updateEmp(Employee employee);
}
EmployeeMapperDynamicSQL.xml<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cn.mybatis.dao.EmployeeMapperDynamicSQL">
<!-- public void updateEmp(Employee employee); -->
<update id="updateEmp">
<!-- set方法的使用
update tbl_employee
<set>
<if test="lastName!=null">
last_name=#{lastName},
</if>
<if test="email!=null">
email=#{email},
</if>
<if test="gender!=null">
gender=#{gender}
</if>
</set>
where id=#{id}
</update>
-->
<!-- 更新拼串 -->
update tbl_employee
<trim prefix="set" suffixOverrides=",">
<if test="lastName!=null">
last_name=#{lastName},
</if>
<if test="email!=null">
email=#{email},
</if>
<if test="gender!=null">
gender=#{gender}
</if>
</trim>
where id=#{id}
</update>
</mapper>
MyBatisTest.java
@Test
public void testDynamicSql() throws IOException{
SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
SqlSession openSession=sqlSessionFactory.openSession();
try {
EmployeeMapperDynamicSQL mapper= openSession.getMapper(EmployeeMapperDynamicSQL.class);
//测试if where
Employee employee=new Employee(1, "Admin11", null, null);
Emp(employee);
openSession.commit();
} catch (Exception e) {
// TODO: handle exception
openSession.close();
e.printStackTrace();
}
}
测试结果