在学习Mybatis中,用JUnit运行了一个测试方法,出现了如下错误:

org.apache.ibatis.cache.CacheException: Error serializing object.  Cause: java.io.NotSerializableException: com.lilu.mybatis.po.User
运行的测试方法如下:

@Testpublic void testFindUserByHashmap() {//获取sessionSqlSession session = sqlSessionFactory.openSession();//获限mapper接口实例UserMapper userMapper = session.getMapper(UserMapper.class);//构造查询条件Hashmap对象HashMap<String, Object> map = new HashMap<String, Object>();map.put("id", 4);map.put("username", "xiao");//传递Hashmap对象查询用户列表List<User> list;try {list = userMapper.findUserByHashmap(map);for (User user : list) {System.out.println(user);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{//关闭sessionsession.close();}}

usermapper.xml中的sql语句:

<select id="findUserByHashmap" parameterType="Hashmap" resultType="com.lilu.mybatis.po.User">select * from user where id=#{id} and username like '%${username}%'</select>

看异常发现说com.lilu.mybatis.po.User这个实体类没有序列化,然后我在User类中加上implements Serializable再运行一次就不报错了。

public class User implements Serializable{public User() {// TODO Auto-generated constructor stub}....}
14:47:33,232 DEBUG org.apache.ibatis.logging.LogFactory:135 - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
14:47:33,385 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource:316 - PooledDataSource forcefully closed/removed all connections.
14:47:33,385 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource:316 - PooledDataSource forcefully closed/removed all connections.
14:47:33,386 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource:316 - PooledDataSource forcefully closed/removed all connections.
14:47:33,386 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource:316 - PooledDataSource forcefully closed/removed all connections.
14:47:33,577 DEBUG com.lilu.mybatis.mapper.UserMapper:62 - Cache Hit Ratio [com.lilu.mybatis.mapper.UserMapper]: 0.0
14:47:33,586 DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction:136 - Opening JDBC Connection
14:47:33,938 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource:387 - Created connection 22756955.
14:47:33,939 DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction:100 - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@15b3e5b]
14:47:33,942 DEBUG com.lilu.mybatis.mapper.UserMapper.findUserByHashmap:159 - ==>  Preparing: select * from user where id=? and username like '%xiao%'
14:47:33,992 DEBUG com.lilu.mybatis.mapper.UserMapper.findUserByHashmap:159 - ==> Parameters: 4(Integer)
14:47:34,024 DEBUG com.lilu.mybatis.mapper.UserMapper.findUserByHashmap:159 - <==      Total: 1
User [id=4,username=xiaojun,sex=1,birthday=Tue Sep 26 00:00:00 CST 2017,address=天津市,toString=com.lilu.mybatis.po.User@dbd940d]
14:47:34,059 DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction:122 - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@15b3e5b]
14:47:34,060 DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction:90 - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@15b3e5b]
14:47:34,061 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource:344 - Returned connection 22756955 to pool.

上面是正常运行的结果,运行后还有数据库连接的释放资源,运行其他测试方法的时候都没有。

如果报序列化的错误就去找报错的类是否序列化,这个类引用的类是否序列化,如果一个父类序列化了,那么它的子类不需要implements Serializable也序列化了。

然后什么是序列化,为什么要序列化呢?

这个大大写的很详细:点击打开链接

Mybatis中的java.io.NotSerializableException相关推荐

  1. 异常java.io.NotSerializableException

    这是spark保护函数的异常:传递局部可序列化变量或者顶级对象中的函数始终是安全的. 例如 val fun = new searchFun // println(fun.isMath("ru ...

  2. Spark连接redis问题 Caused by: java.io.NotSerializableException

    **spark连接Redis的时候报错: ** Caused by: java.io.NotSerializableException: io.jimdb.JimdbNewCluster$$Enhan ...

  3. Caused by: java.io.NotSerializableException:cn.bloghut.pojo.User

    错误产生环境 mybatis 项目开启二级缓存时产生 错误描述 Caused by: java.io.NotSerializableException: cn.bloghut.pojo.Userat ...

  4. java.io.NotSerializableException:异常

    java.io.NotSerializableException:异常 参考文章: (1)java.io.NotSerializableException:异常 (2)https://www.cnbl ...

  5. 没有系列化导致错误:java.io.NotSerializableException: com.bjpowernode.bean.Team

    java.io.NotSerializableException: com.bjpowernode.bean.Team Cause: java.io.NotSerializableException: ...

  6. java序列化错在哪里_Spark序列化错误:java.io.NotSerializableException

    由于spark算子用到的class没有实现序列化,报错如下所示 15/11/23 14:43:47 ERROR Executor: Exception in task 0.0 in stage 4.0 ...

  7. java.io.NotSerializableException: org.apache.kafka.clients.consumer.ConsumerRecord

    java消费kafka数据时报错 ERROR [Executor task launch worker for task 90] - Exception in task 0.0 in stage 54 ...

  8. 使用MyBatis时出现java.io.IOException: Could not find resource com/ee/mybatis/mapper/Usermapper.xml 类似的错误

    使用MyBatis时出现java.io.IOException: Could not find resource com/ee/mybatis/mapper/Usermapper.xml 类似的错误的 ...

  9. 报错异常:java.io.NotSerializableException: daqi.base_io.Student

    异常发生: 在通过使用ObjectOutputStream和ObjectInputStream测试对象的序列化时出现一个小异常,异常片段如下: java.io.NotSerializableExcep ...

最新文章

  1. 测开之路十五:构造函数、析构函数
  2. echarts 有引导线和内部文字_点、线、面构图的异同以及相互转化
  3. C语言解析Ini格式文件
  4. AndroidStudio各个版本下载
  5. 使用idea导入远程git版本库项目
  6. 2019腾讯广告算法大赛之清洗广告数据集和用户数据集
  7. 计算机表格斜杠怎么打,excel斜杠_excel表格打斜杠的方法步骤详解
  8. java囧囧西游之大闹天宫下载_最新囧囧西游之大闹天宫榜单下载_九游
  9. 苹果系统和安卓系统的区别_又一款影视APP,这次支持苹果安卓双系统!
  10. Mac自带apache2搭建服务请求localhost报 403 Forbidden
  11. php 联合查询,多表联合查询
  12. 我的MSN机器人终于有了自己的头像
  13. 女生选择了计算机专业能做什么工作?其实有这 5 种,前景很好
  14. 以太网已连接却无法联网的解决记录
  15. 失业参加聚会_谁被邀请参加聚会?
  16. tlc5620输出三角波流程图_单片机实践A/D和D/A转换的程序
  17. Shelve Silently 静默搁置 Android Studio Git 功能
  18. 搭建个人博客工具推荐
  19. 分布式tensorflow介绍1:实现最简单的ps-work工作模式
  20. Mongodb 全文搜索

热门文章

  1. 每三位添加逗号【C语言】
  2. 组织知识管理与个人知识管理
  3. c语言如何将值赋给结构体指针,C语言给结构体指针赋值
  4. 《哈迪斯:杀出地狱》:超爽的地狱逃生之旅
  5. mongodb distinct条件查询
  6. 专家解读:智能手机最终将被平板电脑取代的4大理由
  7. Xamarin跨线程
  8. godot 角色脚步声代码
  9. 一款值得期待的低功耗ARM存储
  10. kindle fire1代_如何在Kindle Fire(或任何Android设备)上使用自定义应用程序图标