老师插入数据代码没有报错,但是数据库里看不到数据!
@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);
}
}
这是测试代码,控制台也没有打印出是否插入成功的信息!
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层的代码
这是数据库表,这里面显示的数据都是我直接插入的,可以看到自增长的id有跳过,跳过的id是我在程序中运行插入测试后占用的,貌似有数据插入了?我试过在数据库里用查询语句反序查询,指定查询都没有数据显示
正在回答
同学你好,同学说的是不是try-catch和throws两种异常处理的区别:
1、try-catch的异常管理和throws 向上抛出这个异常 ,都是异常的处理方式! 只是一种是积极的的处理,另一种是消极的处理!
2、在一些开发场景中,我们需要在方法中使用try-catch中根据报出的异常来决定这段代码的输出内容! 另一种场景在方法中直接抛出异常,有调用者根据抛出异常的不同,来决定执行那段程序,这些都是有着对应的开发场景呐!在真正开发中,选择在此方法中抛出异常还是交由调用方去处理,具体要看团队中对项目开发过程中的规定。
所以写代码并不是最好都打印异常,要根据具体的场景来决定。
如果同学想表达的不是这个意思,还麻烦同学具体描述一下。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星