【转】详解mybatis的insert,update,delete返回值

您所在的位置:网站首页 返回值为什么是0 【转】详解mybatis的insert,update,delete返回值

【转】详解mybatis的insert,update,delete返回值

2024-07-15 20:54| 来源: 网络整理| 查看: 265

 

 

 

转自:https://blog.csdn.net/qq_24691413/article/details/83895574

insert

 

INSERT INTO `db_ssm`.`t_user` (`id`, `name`, `password`) VALUES (null, #{name}, #{password}) ; User user = new User(); user.setName("l2"); user.setPassword("444"); int i = userMapper.addUser(user); System.out.println(i);

save 如果成功的话返回值是1,因为我只插入了一条数据。为什么要提数据的事呢,是因为据说这个save返回的就是插入的数据的条数。如果插入多条数据的话…… 想入非非中。可能就不是1了啊。这个我就不试了,遇到的时候再试。

这是验证的结果。

那有的人要问了,如果插入出错了呢。

重新模拟插入错误的,

User user = new User(); // user.setName("l2222"); user.setPassword("111"); int i = userMapper.addUser(user); System.out.println(i);

注释掉name,

在我的数据库中name是不可以为空的。

所以硬要插入的话肯定会出错的。下面演示结果。

华丽的出错了,瞬间把我原来以为结果会是0的想法冲击的粉碎。

正是我想要的结果。

所以

insert的结果,如果成功返回的是1(可能是这个1是影响的条数),失败返回的是exception,而不是0。

身为社会有识青年,怎么能容忍异常的呢。我先简单的处理一下。

User user = new User(); user.setPassword("33333"); int i = 0; try { i = userMapper.addUser(user); } catch (Exception e) { i = -1; } finally { } System.out.println(i);

这样一搞,如果插入成功的话返回的是1,如果不成功的话返回的是-1。

岂不妙哉,我都佩服自己的聪明才智了。但是我不能排除有没有可能返回0,所有如果返回的数字不小于1判定为插入成功。

但是一般情况下,我们插入成功了,就要在页面上马上用ajax展示出来。但是遗憾的是,我们的这个user怎么能没有id呢,没有id有怎么查,怎么删,怎么改。所以我们在插入的时候要是可以得到id就更好了。  

INSERT INTO `db_ssm`.`t_user` (`id`, `name`, `password`) VALUES (null, #{name}, #{password}) ;

看到后面 的两个数据了吗?

useGeneratedKeys="true" 这是必须的。 keyProperty="id" 这是id就是绑定的id,那我就疑惑了,这绑定的哪个id啊。令人头疼。你这个返回值明明是int,难道返回的就是这个id。

这个先看测试的文件

User user = new User(); user.setName("1222"); user.setPassword("44122224"); int i = 0; try { i = userMapper.addUser1(user); sqlSession.commit(); } catch (Exception e) { System.out.println("add error"); } finally { } System.out.println(user.toString()); System.out.println(i);

看到这到是明白了,原来不是把id当成返回值啊,原来它是把

parameterType="User" 这是user的id设置成了插入的id。

进来的是没有id的user,出去的是有id的user,真是太厉害了,没想到不仅把返回值改变了,连参数都发生了改变,真是太神奇了。亮瞎了我眼。这思想的境界之高,我等真是不能望其项背。

返回值还是插入的条数。

哦,弄到这,mybatis插入的返回值我是了解的差不多了。

delete delete from t_user where id = #{id}

我先找个你肯定删不掉的为难你

int i = 0; try { i = userMapper.deleteUser(222222); sqlSession.commit(); } catch (Exception e) { System.out.println("delete error"); } finally { } System.out.println(i);

我让你删id是222222的,我还没创建呢,看你怎么删

删不掉的就返回个0啊,好简单,为什么 不说This can't be deleted,一点都不智能。

int i = 0; try { i = userMapper.deleteUser(14); sqlSession.commit(); } catch (Exception e) { System.out.println("delete error"); } finally { } System.out.println(i);

那试试正常的id= 14

哦,删除正常的返回是1。

我给你个删都删不动的,你怎么搞。

 

如果删有外键约束的会报错。哈哈哈。

 `FK_test` FOREIGN KEY (`name`) REFERENCES `t_user` (`name`)

update update t_user set name = #{name}, password = #{password} where id = #{id}

 

成功是1,失败是0

错误是异常

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3