解决Mybatis查询返回类型为int,查询结果为空NULL,报500错误
解决Mybatis查询返回类型为int,结果为空,报500错误org.apache.ibatis.binding.BindingException: Mapper method 'com.rql.mapper.UserMapper.getUserByName attempted to return null from a method with a primitive return type (i
今天在编写一个根据用户名查找数据库是否存在该用户名的记录,返回一个int类型的结构,结果发现报错了org.apache.ibatis.binding.BindingException: Mapper method 'com.rql.mapper.UserMapper.getUserByName attempted to return null from a method with a primitive return type (int).
相关代码如下:
controller
//接收用户的注册信息,写入数据库,首先需要判断数据库是否存在该用户了
String username = user.getUsername();
int checkUserName = userService.getUserByName(username);
service接口
public interface UserService {
int getUserByName(String username);
}
service实现类
//检查用户是否已经存在与数据库user表中
@Override
public int getUserByName(String username) {
return userMapper.getUserByName(username);
}
mapper接口
public interface UserMapper {
//根据用户名查找用户
int getUserByName(String username);
mapper.xml映射
<!--查询用户是否存在-->
<select id="getUserByName" parameterType="String" resultType="java.lang.Integer">
select * from user where username = #{username}
</select>
最后启动服务器,进行该功能的业务处理,发现报了下图的错误
意思就是我的mapper返回值为null,而我想要返回一个int类型的结果,于是我就去改错,我看了很多关于mybatis返回值类型文章,发现好像都没有讲到mybatis的select得到resultType结果为int类型的,于是我在想是不是本来就不能返回的是一个int类型的结果,于是又去求证,结果真的没有返回int类型的情况,如果你真的想要返回int类型的话,需要使用MySQL的IFNULL函数和MAX函数。但我感觉这样做太麻烦了,使其变的复杂,于是我选择了修改返回类型。
更多推荐
所有评论(0)