老师 mybatisutils初始化错误

老师 mybatisutils初始化错误

@Test
   public void testDelete() throws Exception {
       SqlSession session=null;
       try{
           session=MyBatisUtils.openSession();
           int num= session.delete("goods.delete",739);
           session.commit();//提交
       }catch (Exception e){
           if(session!=null){
               session.rollback();//回滚
           }
       }finally {
           MyBatisUtils.closeSession(session);
       }
   }
}

=============================

package com.imooc.mybatis.utils;

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 java.io.IOException;
import java.io.Reader;

/**
* mybatisutils工具类创建全局唯一的SQL sessionFactory对象
* @author TheArbiter47
* @date 2020/4/18-20:35
*/
public class MyBatisUtils {
   //利用static静态属于类不属于对象 且全局唯一
   private static SqlSessionFactory sqlSessionFactory=null;
   //利用静态代码块实例化sqlsessionfactory
   static {
       Reader reader= null;
       try {
           reader = Resources.getResourceAsReader("mybatis-config.xml");
           sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
       } catch (IOException e) {
           //初始化错误时 抛出exceptioninitializererror通知调用者
           e.printStackTrace();
           throw  new ExceptionInInitializerError(e);
       }

   }

   /**
    * open session创建一个新的SQL session对象
    * @return SQL session对象
    */
   public static SqlSession openSession(){
       //默认SQL session自动提交事务数据commit
       //设置false代表关闭自动提交 改为手动提交事务
       return sqlSessionFactory.openSession(false);
   }

   /**
    * 释放一个有效的SQL session对象
    * @param session 准备释放sqlsession对象
    */
   public static void closeSession(SqlSession session){
       if(session!=null){
           session.close();
       }
   }
}
http://img1.sycdn.imooc.com//climg/5e9c45cc0931e8de17841129.jpg

正在回答 回答被采纳积分+1

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

2回答
好帮手慕小班 2020-04-20 10:51:17

同学你好,NoClassDefFoundError是没有加载到这个类。这个类在初始化的时候出现了问题。

    1、同学可以在自己的target目录中检查一下MyBatisUtils是否正常编译了,有对应的class文件吗,如果没有,同学可以清理缓存,重新编译一下。或者同学的包错了吗。

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

    

  2、MyBatisUtils在初始化的时候,我们使用了配置文件,那么很有可能是配置文件的问题。同学可以检查一下配置文件是否正常加载了。

这里老师测试贴出代码运行是没有问题的。

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

  • 配置文件问题在哪看?
    2020-04-23 17:07:35
  • 同学你好,加载时使用了mybatis-config.xml这个文件,同学可以先检查一下文件中是否有飘红的报错提示,然后检查文件中的对应信息是否正确。 如果同学不确定,可以将自己的代码贴出,老师可以帮助同学测试代码定位问题。 如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
    2020-04-23 18:43:08
  • 我是在配置PageHelper时有错才显示这个问题的。 <plugin interceptor="com.github.pagehelper.PageInterceptor"> 后面的PageInterceptor的P我没大写,改正之后就没有NoClassDefFoundError了,至于为什么这里的错误会指向一个已经编译好的MyBatisUtils工具类我也不清楚。。
    2020-04-23 20:08:53
提问者 TheArbiter47 2020-04-20 09:11:58

老师看一看

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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