【转】详解mybatis的insert,update,delete返回值 |
您所在的位置:网站首页 › 返回值为0是什么意思 › 【转】详解mybatis的insert,update,delete返回值 |
转自:https://blog.csdn.net/qq_24691413/article/details/83895574 insertINSERT 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 |