MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;

 本篇博客内容是:修改数据 & 删除数据。 

目录

0.更新和删除简介 

1.更新

(1)先在goods.xml中编写【修改的SQL标签】

(2)然后,测试 & 运行结果

2.删除

(1)先在goods.xml中编写【删除的SQL标签】

(2)然后,测试 & 运行结果


0.更新和删除简介 

更新和删除:

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第1张图片

自然,删除时,parameterType是其他的包装类型,或者Goods类型,或者Map等(应该)都是可以的。

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第2张图片


1.更新

(1)先在goods.xml中编写【修改的SQL标签】

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第3张图片

说明:

(1)update标签,paremeterType必须是实体类吗?不!,经过实测,发现,在更新的时候,paremeterType是Map也是可以的:

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第4张图片

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第5张图片

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第6张图片

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对象:

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第7张图片

而是,通过去数据库中查询来得到原始数据:

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第8张图片

运行结果: 

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第9张图片

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第10张图片


2.删除

(1)先在goods.xml中编写【删除的SQL标签】

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第11张图片

说明:

(1)因为在实际中,大多数的删除操作,是根据主键来进行的,因此此处的示例中,paremeterType设置成了Integer;;;

经过实测,发现在删除的时候,paremeterType设置成Goods也是可以的:

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第12张图片

 

(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入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第13张图片

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第14张图片


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

MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;_第15张图片

 

 

你可能感兴趣的:(Mybatis)