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


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的数据

 执行测试方法后

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM