今天在编写一个根据用户名查找数据库是否存在该用户名的记录,返回一个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函数。但我感觉这样做太麻烦了,使其变的复杂,于是我选择了修改返回类型。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐