使用 if+set 或 if+trim 实现 更新操作
按照 id 更新 学生的 电话及住址
(1) 如果 电话和住址都不为空 , 则 按照 id 更新电话及住址
(2)如果 电话为空,住址不为空, 则按照id 更新住址
(3)如果 电话不为空,住址为空, 则按照id更新电话
(1) 修改 StudentMapper.java 增加方法
/** * 更新 * @param student */ void update(Student student);
(2)修改StudentMapper.xml 增加 update标签
<update id="update" parameterType="student"> update student <set> <if test="phone!=null and phone!=''"> phone=#{phone}, </if> <if test="address!=null and address!=''"> address=#{address}, </if> </set> where sid=#{sid} </update>
(3) 编写测试类
执行前的数据
@Test public void testUpdate() throws IOException { //获得SqlSession SqlSession session = sqlSessionFactory.openSession(); StudentMapper mapper = session.getMapper(StudentMapper.class); //将sid=2的学生的电话改为13920840987, 地址为 北京市海淀区 Student stu = new Student(); stu.setSid(2); stu.setPhone("13920840987"); stu.setAddress("北京市海淀区"); mapper.update(stu); System.out.println("修改成功"); List<Student> list = mapper.query("",""); list.forEach((e)->System.out.println(e)); }
测试结果:
数据更新成功
继续修改 测试类
@Test public void testUpdate() throws IOException { //获得SqlSession SqlSession session = sqlSessionFactory.openSession(); StudentMapper mapper = session.getMapper(StudentMapper.class); //将sid=2的学生的电话改为13920840987, 地址为 北京市海淀区 Student stu = new Student(); stu.setSid(2); stu.setPhone(""); stu.setAddress("上海市浦东区"); mapper.update(stu); System.out.println("修改成功"); List<Student> list = mapper.query("",""); list.forEach((e)->System.out.println(e)); }
?电话号码为空, 地址不为空
set 标签 在使用时? 自动会去除 多余的 ,
同样 上面的代码 也可以使用 if+trim 实现
<update id="update" parameterType="student"> update student <trim prefix="set" suffixOverrides=","> <if test="phone!=null and phone!=''"> phone=#{phone}, </if> <if test="address!=null and address!=''"> address=#{address}, </if> </trim> where sid=#{sid} </update>
update student <trim prefix="set" suffixOverrides=","> <if test="phone!=null and phone!=''"> phone=#{phone}, </if> <if test="address!=null and address!=''"> address=#{address}, </if> </trim> where sid=#{sid}当? trim 中 if 子句成立时,? update student set 条件1=值,条件2=值?
?suffixOverrides? 也会自动去除多余的,