当在用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); |
至此问题结束