测试login.do,用户名不存在,传参没有成功??

来源:6-2 登录功能开发

筱爻

2017-08-14

怎么解决下呀,从dao层都没有拿到数据??

测试login.do结果:

http://szimg.mukewang.com/59915cba00011ac815350345.jpg

debug调试结果:

http://szimg.mukewang.com/59915cba00016a8107730422.jpg

http://szimg.mukewang.com/59915cbb0001286007440151.jpg

控制台打印:

http://szimg.mukewang.com/59915cbb00019cb808150642.jpg

【相关代码】

UserMapper.xml:

<mapper namespace="com.mall.dao.UserMapper" >
 <resultMap id="BaseResultMap" type="com.mall.pojo.User" >
   <constructor >
     <idArg column="id" jdbcType="INTEGER" javaType="java.lang.Integer" />
     <arg column="username" jdbcType="VARCHAR" javaType="java.lang.String" />
     <arg column="password" jdbcType="VARCHAR" javaType="java.lang.String" />
     <arg column="email" jdbcType="VARCHAR" javaType="java.lang.String" />
     <arg column="phone" jdbcType="VARCHAR" javaType="java.lang.String" />
     <arg column="question" jdbcType="VARCHAR" javaType="java.lang.String" />
     <arg column="answer" jdbcType="VARCHAR" javaType="java.lang.String" />
     <arg column="role" jdbcType="INTEGER" javaType="java.lang.Integer" />
     <arg column="create_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
     <arg column="update_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
   </constructor>
 </resultMap>
 <sql id="Base_Column_List" >
   id, username, password, email, phone, question, answer, role, create_time, update_time
 </sql>
//查看用户名是否存在
<select id="checkUsername" resultType="int" parameterType="string">
 SELECT COUNT(1) FROM mall_user
 WHERE username = #{username}
</select>
<select id="selectLogin" resultMap="BaseResultMap" parameterType="map">
 SELECT <include refid="Base_Column_List" />  from mall_user
 WHERE username = #{username},password = #{password}}
</select>
</mapper>


UserServiceImpl.java

@Autowired
private UserMapper userMapper;
@Override
public ServerResponse<User> login(String username, String password) {
   //检查用户名是否存在
   int resultCode = userMapper.checkUsername(username);
   System.out.println("------ServiceImpl返回username=---------"+username);
   if(resultCode == 0 ){
       ServerResponse.createByErrorMessage("用户名不存在");
   }
   // todo 密码登录 MD5
   //检查用户名和密码是否匹配:
   User user = userMapper.selectLogin(username,password);
   if(user == null){
       return ServerResponse.createByErrorMessage("密码错误");
   }
   //登录成功,密码处理为null;
   user.setPassword(StringUtils.EMPTY);
   return ServerResponse.createBySuccess("登录成功",user);
}


UserController.java

private IUserService iUserService;

/**
* 用户登录
* @param username
* @param password
* @param session
* @return
* 登录成功后把用户信息存进session
*/
@RequestMapping(value="login.do", method = RequestMethod.POST)
@ResponseBody
public ServerResponse<User> login(String username, String password, HttpSession session){
   ServerResponse<User> response = iUserService.login(username, password);
   System.out.println("------Controller返回username=---------"+username);
   if(response.isSuccess()){
       session.setAttribute(Const.CURRENT_USER,response.getData());
   }
   return response;
}


写回答

3回答

筱爻

提问者

2017-08-21

已经解决:

 SELECT <include refid="Base_Column_List" />  from mall_user

 WHERE username = #{username},password = #{password}}

应该为:

 SELECT <include refid="Base_Column_List" />  from mall_user

 WHERE username = #{username} and password = #{password}


0
0

qq_浮空_03536131

2017-08-15

如果还不行, 看看你的调试工具,  输出那里  是不是弄错了

0
2
筱爻
果然调试工具输入参数那里一直都HEADERS那里了,现在改过来了,参数放在body,可还是500
2017-08-19
共2条回复

舞有涵意

2017-08-14

<select id="selectLogin" resultMap="BaseResultMap" parameterType="map">

 SELECT <include refid="Base_Column_List" />  from mall_user

 WHERE username = #{username},password = #{password}}

</select>

你好,我看到你的sql多了一个“}”,password = #{password}} ,去掉后调试一下,谢谢。

0
2
筱爻
明明已经回复了 不知道怎么了没有唉,再回复一遍。 花括号马虎了,已经改过来了, 不过username都没有传参成功。 还是没解决,一周了唉,要烦死。
2017-08-19
共2条回复

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9476 学习 · 8804 问题

查看课程