老师插入数据代码没有报错,但是数据库里看不到数据!

老师插入数据代码没有报错,但是数据库里看不到数据!


@Test
public void testInsertSong() throws Exception{
   SqlSession session=null;
   try{
       session=MyBatisUtils.openSession();
       SongDAO songDAO = session.getMapper(SongDAO.class);
       Song song=new Song();
       song.setName("给我一首歌的时间");
       song.setSinger("周杰伦");
       song.setCategory("流行");
       song.setWriter("周杰伦");
       song.setLanguage("国语");
       song.setIssudate("2018-10-14");
       int num=songDAO.insertSong(song);
       if(num >0){
           System.out.println("插入成功!");
       }else {
           System.out.println("插入失败!");
       }
       session.commit();
   }catch (Exception e){
       if (session != null) {
           session.rollback();
       }
   }finally {
       MyBatisUtils.closeSession(session);
   }
}

这是测试代码,控制台也没有打印出是否插入成功的信息!

http://img1.sycdn.imooc.com//climg/5e75f325093e997917811006.jpg

package com.imooc.mybatis.dao;

import com.imooc.mybatis.entity.Song;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.SelectKey;

public interface SongDAO {
   @Insert("INSERT INTO t_song(name,singer,category,writer,language,issudate) " +
           "VALUES(#{name},#{singer},#{category},#{writer},#{language},#{issudate})")
   @SelectKey(statement = "select last_insert_id()",before = false,keyProperty = "name",resultType = Integer.class)
   public int insertSong(Song song);
}

这是dao层的代码

http://img1.sycdn.imooc.com//climg/5e75f35709a940d810380715.jpg这是数据库表,这里面显示的数据都是我直接插入的,可以看到自增长的id有跳过,跳过的id是我在程序中运行插入测试后占用的,貌似有数据插入了?我试过在数据库里用查询语句反序查询,指定查询都没有数据显示

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,同学说的是不是try-catch和throws两种异常处理的区别:

1、try-catch的异常管理和throws  向上抛出这个异常 ,都是异常的处理方式! 只是一种是积极的的处理,另一种是消极的处理!

    2、在一些开发场景中,我们需要在方法中使用try-catch中根据报出的异常来决定这段代码的输出内容!    另一种场景在方法中直接抛出异常,有调用者根据抛出异常的不同,来决定执行那段程序,这些都是有着对应的开发场景呐!在真正开发中,选择在此方法中抛出异常还是交由调用方去处理,具体要看团队中对项目开发过程中的规定。

所以写代码并不是最好都打印异常,要根据具体的场景来决定。

如果同学想表达的不是这个意思,还麻烦同学具体描述一下。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • CodeMz 提问者 #1
    好的谢谢老师!!
    2020-03-22 16:19:47
好帮手慕小班 2020-03-22 10:07:25

同学你好,可能是有报错,但是同学并没有将报错内容输出,同学可以在catch中尝试输出一下是否有异常内容。例如:

http://img1.sycdn.imooc.com//climg/5e76c84c0977be3404870280.jpg

如上所示,再来排查一下。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 CodeMz #1
    好的老师,打印以后排查到了错误!谢谢!顺便问一下,我看视频讲课老师很多时候只是将异常抛出去,没有打印,这两者有什么区别么,以后写代码是不是最好都打印异常?
    2020-03-22 11:17:13
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师