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 successfully
update的基本用法就这么简单,更复杂的情况后面通过动态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批量修改-xml方式
mybatis批量查询,批量新增就不聊了,今天看看批量修改. 直接上代码吧 xml文件中代码如下: <update id="batchUpdate" parameterTyp ...
- Mybatis Plus——以XML方式使用 Wrapper 自定义SQL时IDEA错误[**expected, got ‘${‘]解决方案
问题描述 '(', ',', CROSS, FOR, GROUP, HAVING, INNER, INTO, JOIN, LEFT, LIMIT, LOCK, NATURAL, ORDER, PROC ...
- MyBatis-09MyBatis注解方式之@Update/@Delete
@Update 1. RoleMapper接口增加接口方法 2. 单元测试 @Delete 1. RoleMapper接口增加接口方法 2. 单元测试 @Update 1. RoleMapper接口增 ...
- SpringBoot的MyBatis generator 注解方式和xml方式 (四)
两种形式: XML方式 type="XMLMAPPER" 注解方式 type="ANNOTATEDMAPPER" 1.1 pom.xml里添加maven插件 & ...
- java中xml怎样配置_如何通过XML方式配置并实现Mybatis
idea中创建一个maven项目 在pom文件中导入下面的依赖 org.mybatis mybatis 3.4.6 mysql mysql-connector-java 8.0.18 log4j lo ...
- MyBatis-04 MyBatis XML方式之insert元素
insert概述 简单的insert用法 1. UserMapper中添加接口方法 2. UserMapper.xml 添加节点 3. 编写单元测试 使用JDCB方式返回主键自增的值 1.UserMa ...
- spring和mybatis整合:使用xml方式
文章目录 spring和mybatis整合:使用xml方式 1. 创建数据库 2. 创建工程,pom.xml文件如下: 3. 依赖下载地址如下: 4. 配置mybatis的全局配置,在resource ...
- MyBatis-03 MyBatis XML方式之select元素
概述 select用法 根据用户id查询用户信息 1.UserMapper接口中添加接口方法 2. UserMapper.xml中配置resultMap和select元素 查询全部的SysUser 添 ...
- MyBatis-02 MyBatis XML方式概述及配置步骤
概述 一个简单的权限控制需求 创建数据库表 创建实体类 XML方式概述及步骤 1. 首先在src/main/resources下com.artisan.mybatis.xml.mapper目录下创建5 ...
最新文章
- python学习之第四课时--运算符
- 洛谷——P2678 跳石头
- 使用uni-app报错this.setData is not a function
- 浙大慕课c语言答案,程序设计入门——C语言
- 进行有效客户细分的八个步骤
- 线性代数矩阵思维导图_斌叔2021考研数学公式:几种特殊形式的矩阵
- salt-API基本验证命令
- 联系人姓名的多音字 处理
- Linux内核中dev_info、dev_dbg、dev_err及动态调试
- mysql ibatis count_[mysql] mysql-myibatis-整理
- 【机器学习线性代数】17 利用SVD进行彩色图片压缩
- Android手机卡顿原因
- vite+ts+vue3 知识点(定义全局函数和变量)
- C++---之waitKey()函数
- 门诊排队叫号系统,有序叫号就诊,适用医院医院、门诊部、诊所等
- 基于ffmpeg+opengl+opensl es的android视频播放器
- tg3269c网卡驱动linux,TG-3269C自适应PCI网卡驱动
- Android 粒子爆炸效果,可以给任意 view 添加该效果
- 【渝粤题库】陕西师范大学292061 会计学基础 作业 (高起专)
- 《文言文复兴系列 3》(江湖一剑客)
热门文章
- opencv 显示图片(直接)
- syslinux引导扇区不支持ntfs文件系统_实战 FAT12 文件系统
- python趣味编程入门 迈克 桑德斯_Python趣味编程入门
- float python_Python中float('INF')的使用
- 机器学习笔记:Momentum
- 文巾解题 113. 路径总和 II
- pyecharts 应用5:视觉映射配置项VisualMapOpts
- Python科学计算包应用-教你以可视化的方式打开NumPy
- 数据结构与算法基础知识集锦
- MapReduce编程实战之“初识”