mybatis更新數據(傳對象 傳 Map參數)


一、根據主鍵更新(傳對象)

1. 接口是:

/*
    * 根據主鍵更新
    * */
    int updateById(SysUser sysUser);

2. xml下:

<update id="updateById">
        update sys_user
        set user_name = #{userName},
             user_password = #{userPassword},
            user_email = #{userEmail},
            user_info = #{userInfo},
            head_img = #{headImg ,jdbcType = BLOB},
            create_time =  #{createTime, jdbcType = TIMESTAMP}
        where id = #{id}
    </update>

3. 測試函數:

@Test
    public void testUpdate(){
        SqlSession sqlSession = getSqlSession();
        try{
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            SysUser sysUser = userMapper.selectById(1L);
            Assert.assertEquals("admin_test1",sysUser.getUserName());
            sysUser.setUserName("admin");
            sysUser.setUserEmail("test@com.example");
            sysUser.setUserInfo("admin_test info");
            int result = userMapper.updateById(sysUser);
            System.out.println(result);
            Assert.assertNotEquals(1,result);
            sysUser = userMapper.selectById(1L);
            Assert.assertEquals("admin",sysUser.getUserName());
        }finally {
            sqlSession.commit();
            sqlSession.close();
        }

    }

二、通過Map更新列(傳Map)

1. 接口如下:

/*
    * 通過Map更新列
    * */
    int updateByMap(Map<String, Object> map);

2. xml中:

<update id="updateByMap">
        update sys_user
        set
        <foreach collection="_parameter" item="val" index="key" separator=",">
            ${key} =  #{val}
        </foreach>
        where id = #{id}


    </update>

注:這里沒有通過@ Param 注解指定參數名,因而 MyBati 在內部的上下文中使用了默認值_parameter 作為該參數的 key ,所以在 XML 使用了_parameter

item:變量名,值為從法代對象中取出的每一個值。

index:這個值為 Map key (鍵值)

3. 測試函數如下:

 

@Test
    public void testUpdateByMap(){
        SqlSession sqlSession = getSqlSession();
        try {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("id" , 1L);
            map.put("user_email","test@ccc.tk");
            map.put("user_password", "12345678");
            userMapper.updateByMap(map);
            SysUser user = userMapper.selectById(1L);
            Assert.assertEquals("test@ccc.tk",user.getUserEmail());

        }finally {
            sqlSession.close();
        }

    }

 

至此,結束。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM