
MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;
发布日期:2021-05-09 19:26:54
浏览次数:25
分类:精选文章
本文共 3130 字,大约阅读时间需要 10 分钟。
本篇博客内容是:修改数据 & 删除数据。
目录
0.更新和删除简介
更新和删除:
自然,删除时,parameterType是其他的包装类型,或者Goods类型,或者Map等(应该)都是可以的。
1.更新
(1)先在goods.xml中编写【修改的SQL标签】
说明:
(1)update标签,paremeterType必须是实体类吗?不!,经过实测,发现,在更新的时候,paremeterType是Map也是可以的:
PS,感觉,具体的parameterType是什么类型,可能需要看前端传过来的是什么参数,然后再结合后台看怎么做更好,,,,OK,能懂这个意思吧~~~
(2)然后,测试 & 运行结果
package com.imooc.mybatis;import com.imooc.mybatis.dto.GoodsDTO;import com.imooc.mybatis.entity.Goods;import com.imooc.mybatis.entity.Student;import com.imooc.mybatis.utils.MyBatisUtils;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;import java.io.IOException;import java.io.Reader;import java.sql.Connection;import java.util.HashMap;import java.util.List;import java.util.Map;/** * JUnit单元测试类 */public class MyBatisTestor { @Test public void testUpdate() throws Exception { SqlSession session = null; try { session = MyBatisUtils.openSession(); Goods goods = session.selectOne("goods.selectById", 998); //首先,根据商品id获取商品对象 // 然后,再修改这个Goods对象 goods.setTitle("更新测试商品标题"); // update方法返回值:本次更新成功的数据又多少; int num = session.update("goods.update", goods); session.commit();// commit()方法:提交事务数据。 } catch (Exception e) { if (session != null){ session.rollback(); // 如果程序出错,未能完整执行,则回滚事务。。。 // PS:发现Mybatis封装后,事务控制在编码实现上简单了些 } throw e; }finally { MyBatisUtils.closeSession(session); } }}
说明:
(1)更新操作,不建议手动set去组织Goods对象:
而是,通过去数据库中查询来得到原始数据:
运行结果:
2.删除
(1)先在goods.xml中编写【删除的SQL标签】
说明:
(1)因为在实际中,大多数的删除操作,是根据主键来进行的,因此此处的示例中,paremeterType设置成了Integer;;;
经过实测,发现在删除的时候,paremeterType设置成Goods也是可以的:
(2)然后,测试 & 运行结果
package com.imooc.mybatis;import com.imooc.mybatis.dto.GoodsDTO;import com.imooc.mybatis.entity.Goods;import com.imooc.mybatis.entity.Student;import com.imooc.mybatis.utils.MyBatisUtils;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;import java.io.IOException;import java.io.Reader;import java.sql.Connection;import java.util.HashMap;import java.util.List;import java.util.Map;/** * JUnit单元测试类 */public class MyBatisTestor { @Test public void testDelete() throws Exception { SqlSession session = null; try { session = MyBatisUtils.openSession(); // delete方法返回值:本次删除成功的数据有多少; int num = session.delete("goods.delete", 998); session.commit();// commit()方法:提交事务数据。 } catch (Exception e) { if (session != null){ session.rollback(); // 如果程序出错,未能完整执行,则回滚事务。。。 // PS:发现Mybatis封装后,事务控制在编码实现上简单了些 } throw e; }finally { MyBatisUtils.closeSession(session); } }}
运行结果:
注:临时的感觉:在异常处理的时候,相对底层的代码的异常尽量向上抛,交给上层的调用者去处理,而不是在底层就把异常给捕获;;以防止在底层出现异常后,上层调用者被蒙蔽了双眼。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月08日 21时47分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Promise串行执行
2021-05-10
CSS三栏布局问题
2021-05-10
js数据类型检测
2021-05-10
winform关闭窗口 取消关闭操作
2021-05-10
解决VS2012的 未能将网站配置为使用ASP.NET4.5问题
2021-05-10
mysql权限问题
2021-05-10
Tomcat中jdk版本与项目版本不一致造成404错误以及Eclipse修改jdk版本
2021-05-10
Spring通过工厂方法配置Bean
2021-05-10
Spring事务的两种常用传播方式
2021-05-10
配置SpringMVC中的视图解析器
2021-05-10
Redis6大基础数据结构以及在spring中的常用命令
2021-05-10
【Unity3D】Scene窗口看不见任何物体问题
2021-05-10
【OpenGL】蓝宝书第七章——纹理高级知识
2021-05-10
【OpenGL】蓝宝书第十章——片段操作:管线的终点
2021-05-10
杭电OJ-2034(C)
2021-05-10
如何在excel2019指定的单元格中插入图片
2021-05-10
Java练习中的渣渣小点子,只给自己看的
2021-05-10
力扣-26题(Java)
2021-05-10