Mybatis中报错:attempted to return null from a method with a primitive return type (int)
-
学习Mybatis的使用
环境
-
jdk版本:jdk-16.0.2
-
Idea版本:2021.2
-
Mybatis版本:mybatis-3.5.9
-
问题及补救
问题描述
其他文件就不在这里赘述了,有User类,自己抽取的SqlSessionUtils类,以及配置文件等等。
UserMapper.java
:
1 2 3 4 | /** * 插入一条用户信息 */ int insertUser(User user); |
UserMapper.xml
:
1 2 3 4 | <!--User insertUser(User user);null,'张三','123456',24,'男', '12345@qq.com'--> < select id="insertUser" resultType="user"> insert into t_user values(null, #{username}, #{password}, #{age}, #{sex}, #{email}); </ select > |
创建测试类运行:
1 2 3 4 5 6 7 8 | @Test public void testInsertUser() { SqlSession sqlSession = SqlSessionUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper. class ); int result = mapper.insertUser( new User( null , "张三" , "243" , 34 , "男" , "234@qq" )); System.out.println(result); } |
结果报错:
1 | org.apache.ibatis.binding.BindingException: Mapper method 'com.linxuan.mybatis.mapper.UserMapper.insertUser attempted to return null from a method with a primitive return type (int). |
解决方案
-
网上搜索说可以将返回值给换一下,也就是方法的返回值换成
Integer
,这样返回NULL不会报错。int insertUser(User user);
换成:Integer insertUser(User user);
。同时mapper.insertUser(new User(null, "张三", "243", 34, "男", "234@qq"));
的返回值也变成了Integer
。 执行测试类之后确实没有报错,数据库里面也确实是添加了用户信息,可是返回值变成了NULL,这不合理啊! -
突然我想到了,咱们这个SQL语句是DML,插入语句的啊,我为什么要用
select
标签呢? 修改为insert
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)