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);        }    }}

运行结果:


注:临时的感觉:在异常处理的时候,相对底层的代码的异常尽量向上抛,交给上层的调用者去处理,而不是在底层就把异常给捕获;;以防止在底层出现异常后,上层调用者被蒙蔽了双眼。

 

 

上一篇:MyBatis入门十二:预防SQL注入攻击;(${}和#{}的区别)
下一篇:自监督图像论文复现 | BYOL(pytorch)| 2020

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月08日 21时47分07秒