MyBatis-05 MyBatis XML方式之update/delete元素
生活随笔
收集整理的這篇文章主要介紹了
MyBatis-05 MyBatis XML方式之update/delete元素
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 概述
- update 用法
- UserMapper接口中增加接口方法
- UserMapper.xml中配置update 元素
- 單元測試
- delete用法
- UserMapper接口中增加接口方法
- UserMapper.xml中配置delete元素
- 單元測試
概述
接著上篇博客 Mybatis-04Mybatis XML方式之insert元素,我們接著來學習 update和delete, 比較簡單。
update 用法
需求: 通過主鍵更新sys_user
UserMapper接口中增加接口方法
/*** * * @Title: updateSysUserById* * @Description: 修改SysUser* * @param sysUser* @return* * @return: int 受影響的行數,這里僅僅是為了做記錄,void在實際業務中更常用*/int updateSysUserById(SysUser sysUser);UserMapper.xml中配置update 元素
<!-- 根據id更改SysUser --><update id="updateSysUserById">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>單元測試
@Testpublic void updateSysUserByIdTest() {logger.info("updateSysUserByIdTest");// 獲取SqlSessionSqlSession sqlSession = getSqlSession();try {// 獲取UserMapper接口UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 先根據ID查詢出對應的sysuserSysUser sysUser = userMapper.selectSysUserById((long) 1);// 當前數據庫用戶的userName期望為adminAssert.assertEquals("admin", sysUser.getUserName());// 修改用戶名sysUser.setUserName("adminUpdated");// 修改郵件sysUser.setUserEmail("updateSysUser@artisan.com");// 修改用戶 ,返回受影響的行數int result = userMapper.updateSysUserById(sysUser);// 只插入一條數據 ,期望是1Assert.assertEquals(1, result);logger.info("受影響的行數:" + result);logger.info("userName:" + sysUser.getUserName() + ",userEmail:" + sysUser.getUserEmail());// 期望的用戶名為adminUpdatedAssert.assertEquals("adminUpdated", sysUser.getUserName());// 期望的郵箱為updateSysUser@artisan.comAssert.assertEquals("updateSysUser@artisan.com", sysUser.getUserEmail());} catch (Exception e) {e.printStackTrace();} finally {// 為了保持測試數據的干凈,這里選擇回滾// 由于默認的sqlSessionFactory.openSession()是不自動提交的// 除非顯式的commit,否則不會提交到數據庫sqlSession.rollback();logger.info("為了保持測試數據的干凈,這里選擇回滾,不寫入mysql,請觀察日志,回滾完成");sqlSession.close();logger.info("sqlSession close successfully ");}}日志
2018-04-16 00:55:44,785 INFO [main] (BaseMapperTest.java:26) - sessionFactory bulit successfully 2018-04-16 00:55:44,788 INFO [main] (BaseMapperTest.java:29) - reader close successfully 2018-04-16 00:55:44,790 INFO [main] (UserMapperTest.java:271) - updateSysUserByIdTest 2018-04-16 00:55:45,193 DEBUG [main] (BaseJdbcLogger.java:142) - ==> Preparing: select a.id, a.user_name, a.user_password, a.user_email, a.user_info, a.head_img, a.create_time from sys_user a where id = ? 2018-04-16 00:55:45,247 DEBUG [main] (BaseJdbcLogger.java:142) - ==> Parameters: 1(Long) 2018-04-16 00:55:45,270 TRACE [main] (BaseJdbcLogger.java:148) - <== Columns: id, user_name, user_password, user_email, user_info, head_img, create_time 2018-04-16 00:55:45,270 TRACE [main] (BaseJdbcLogger.java:148) - <== Row: 1, admin, 123456, admin@artisan.com, <<BLOB>>, <<BLOB>>, 2018-04-13 21:12:47.0 2018-04-16 00:55:45,277 DEBUG [main] (BaseJdbcLogger.java:142) - <== Total: 1 2018-04-16 00:55:45,278 DEBUG [main] (BaseJdbcLogger.java:142) - ==> Preparing: update sys_user set user_name = ?, user_password = ?, user_email = ?, user_info = ?, head_img = ?, create_time = ? where id = ? 2018-04-16 00:55:45,281 DEBUG [main] (BaseJdbcLogger.java:142) - ==> Parameters: adminUpdated(String), 123456(String), updateSysUser@artisan.com(String), 管理員用戶(String), java.io.ByteArrayInputStream@74c176bf(ByteArrayInputStream), 2018-04-13 21:12:47.0(Timestamp), 1(Long) 2018-04-16 00:55:45,283 DEBUG [main] (BaseJdbcLogger.java:142) - <== Updates: 1 2018-04-16 00:55:45,284 INFO [main] (UserMapperTest.java:292) - 受影響的行數:1 2018-04-16 00:55:45,284 INFO [main] (UserMapperTest.java:294) - userName:adminUpdated,userEmail:updateSysUser@artisan.com 2018-04-16 00:55:45,288 INFO [main] (UserMapperTest.java:309) - 為了保持測試數據的干凈,這里選擇回滾,不寫入mysql,請觀察日志,回滾完成 2018-04-16 00:55:45,289 INFO [main] (UserMapperTest.java:312) - sqlSession close successfullyupdate的基本用法就這么簡單,更復雜的情況后面通過動態SQL中闡述。
delete用法
UserMapper接口中增加接口方法
/*** * * @Title: deleteSysUserById* * @Description: 根據ID刪除sysuser* * @param id* @return* * @return: int*/int deleteSysUserById(Long id);UserMapper.xml中配置delete元素
<!-- 根據ID刪除用戶 --><delete id="deleteSysUserById">delete from sys_user where id = #{id}</delete>單元測試
@Testpublic void deleteSysUserByIdTest() {logger.info("deleteSysUserByIdTest");// 獲取SqlSessionSqlSession sqlSession = getSqlSession();try {// 獲取UserMapper接口UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 調用刪除接口int result = userMapper.deleteSysUserById((long) 1);// 期望影響的結果條數為 1Assert.assertEquals(1, result);// 再次查詢SysUser sysUser = userMapper.selectSysUserById((long) 1);// 期望查詢出來的sysUser 為 nullAssert.assertNull(sysUser);} catch (Exception e) {e.printStackTrace();} finally {// 為了保持測試數據的干凈,這里選擇回滾// 由于默認的sqlSessionFactory.openSession()是不自動提交的// 除非顯式的commit,否則不會提交到數據庫sqlSession.rollback();logger.info("為了保持測試數據的干凈,這里選擇回滾,不寫入mysql,請觀察日志,回滾完成");sqlSession.close();logger.info("sqlSession close successfully ");}}日志
2018-04-16 00:56:01,547 INFO [main] (BaseMapperTest.java:26) - sessionFactory bulit successfully 2018-04-16 00:56:01,550 INFO [main] (BaseMapperTest.java:29) - reader close successfully 2018-04-16 00:56:01,553 INFO [main] (UserMapperTest.java:320) - deleteSysUserByIdTest 2018-04-16 00:56:01,945 DEBUG [main] (BaseJdbcLogger.java:142) - ==> Preparing: delete from sys_user where id = ? 2018-04-16 00:56:02,023 DEBUG [main] (BaseJdbcLogger.java:142) - ==> Parameters: 1(Long) 2018-04-16 00:56:02,029 DEBUG [main] (BaseJdbcLogger.java:142) - <== Updates: 1 2018-04-16 00:56:02,031 DEBUG [main] (BaseJdbcLogger.java:142) - ==> Preparing: select a.id, a.user_name, a.user_password, a.user_email, a.user_info, a.head_img, a.create_time from sys_user a where id = ? 2018-04-16 00:56:02,032 DEBUG [main] (BaseJdbcLogger.java:142) - ==> Parameters: 1(Long) 2018-04-16 00:56:02,055 DEBUG [main] (BaseJdbcLogger.java:142) - <== Total: 0 2018-04-16 00:56:02,060 INFO [main] (UserMapperTest.java:343) - 為了保持測試數據的干凈,這里選擇回滾,不寫入mysql,請觀察日志,回滾完成 2018-04-16 00:56:02,061 INFO [main] (UserMapperTest.java:346) - sqlSession close successfully總結
以上是生活随笔為你收集整理的MyBatis-05 MyBatis XML方式之update/delete元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyBatis-04 MyBatis X
- 下一篇: asp.net ajax控件工具集 Au