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

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

     执行测试方法后

     

  • 相关阅读:
    c/cpp枚举练习
    数据类型的标识
    引用变量
    cocos2dx 3.3 笔记
    希望获取到页面中所有的checkbox怎么做?
    如何判断某变量是否为数组数据类型?
    驼峰函数写法
    trim()函数
    js 获取页面可视区域宽高
    全屏滚动插件
  • 原文地址:https://www.cnblogs.com/lyh233/p/12359715.html
Copyright © 2011-2022 走看看