新手记一次mybatis中利用SQL语句给boolean类型赋值的问题

当在用mybatis连接数据库的时候 想要验证一个值是否存在时出现的问题

在工程中想要验证数据库中t_user表中是否存在相同userId,存在返回true 不存在返回false

那么问题来了

  • 数据库SQL中没有boolean类型
  • Sql返回值为空的时候mybatis如何去接收数据
    mybatis中的代码
1
2
3
  <select id="findExistId" parameterType="java.lang.String" resultType="String">
  SELECT user_id from t_user WHERE user_id = #{userid}
  </select>

User类代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class User {
    public String userId;
    public String userName;
     public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
    }

作为新手第一时间想到的是用User去接再用if去判断,但是用User类如果表中为空会出现空指针异常

这个时候经查阅,发现了一个方法

  • 先统计出现的次数
1
SELECT user_id from t_user WHERE user_id = 123

  • 将mybatis的resultType返回值类型修改为boolean
1
2
3
  <select id="findExistId" parameterType="java.lang.String" resultType="boolean">
  SELECT COUNT(user_id) from t_user WHERE user_id = #{userid}
  </select>

(ps:当返回的值>1时 ,则mybatis会返回true,否则返回false)

接口userDao.java

1
public boolean findExistId(@Param("userid") String userId);

至此问题结束