菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
298
0

18、mybatis学习——mybatis的动态sql之通过{<set>和<if>结合}或者{<trim>和<if>的结合}实现部分字段更新

原创
05/13 14:22
阅读数 80643

Student.java

 StudentMapper接口定义方法

 StudentMapper配置文件进行相应配置

方式一(<set>和<if>结合)

     <update id="updateStu">
         update student
         <!-- set会去掉拼接后的字符串多余的(逗号),
             比如只修改id时则会把id=#{id}后面的(逗号)去掉 -->
         <set>
             <if test="id!=null">
                 id = #{id},
             </if>
             <if test="name!=null &amp;&amp; name.trim()!=''">
                 name = #{name}
             </if>
         </set>
         where id = #{id}
     </update>

方式二(<trim>和<if>结合)

     <update id="updateStu">
         update student
         <!-- 通过trim也能实现去掉拼接后的字符串多余的(逗号) -->
         <trim prefix="set" suffixOverrides=",">
             <if test="id!=null">
                 id = #{id},
             </if>
             <if test="name!=null &amp;&amp; name.trim()!=''">
                 name = #{name}
             </if>
         </trim>
         where id = #{id}
     </update>

测试方法

    //测试动态sql的{<set>和<if>结合}或者{<trim>和<if>的结合}实现部分字段更新
    @Test
    public void testUpdateStu() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
        Student student = studentMapper.updateStu(new Student(1, "小王"));
        System.out.println(student);
        sqlSession.close();
    }

原来id为1的数据

 执行测试方法后

 

 

发表评论

0/200
298 点赞
0 评论
收藏