從0到電商——使用者模組
阿新 • • 發佈:2018-12-21
建立返回物件
根據返回值建立返回物件
返回值 ServerResponse 類:包含三個資料 狀態(status)、資訊(msg)、[ 泛型 ]資料(data)
public class ServerResponse<T> implements Serializable { private int status; private String msg; private T data; private ServerResponse(int status){ this.status = status; } private ServerResponse(int status,T data){ this.status = status; this.data = data; } private ServerResponse(int status,String msg,T data){ this.status = status; this.msg = msg; this.data = data; } private ServerResponse(int status,String msg){ this.status = status; this.msg = msg; }
建立一個列舉類 ,裡面的屬性可以通過 類名直接呼叫
public enum ResponseCode { SUCCESS(0,"SUCCESS"), ERROR(1,"ERROR"), NEED_LOGIN(10,"NEED_LOGIN"), ILLEGAL_ARGUMENT(2,"ILLEGAL_ARGUMENT"); private final int code; private final String desc; ResponseCode(int code,String desc){ this.code = code; this.desc = desc; } public int getCode(){ return code; } public String getDesc(){ return desc; } }
列舉的其他例子
public enum DataSourceType {
MASTER,SLAVE;
}
登入功能
controller層
登入方法 login()
- 方法返回值型別 ServerResponse<T>
- 注意裡面的型別是 泛型資料 T ;
- T 代表各種型別 例如: ServerResponse<User>
- 傳遞三個引數 name;password;session
- 如果返回的是 success 就用 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); if(response.isSuccess()){ session.setAttribute(Const.CURRENT_USER,response.getData()); } return response; }
imp層
先查詢使用者名稱,檢驗是否存在;
@Override
public ServerResponse<User> login(String username, String password) {
// 校驗使用者是否存在
int i = userMapper.checkUsername(username);
if(i==0){
return ServerResponse.createByErrorMessage("使用者不存在");
}
// 校驗密碼
String md5Password = MD5Util.MD5EncodeUtf8(password);
User user = userMapper.selectLogin(username, md5Password);
if(user==null){
return ServerResponse.createByErrorMessage("使用者密碼錯誤");
}
user.setPassword(StringUtils.EMPTY);
return ServerResponse.createBySuccess("登入成功",user);
}
這個查詢使用者名稱的語句不嚴謹,萬一有重複的名字
<select id="checkUsername" resultType="int" parameterType="string" >
select count(1)
from mmall_user
where username = #{username,jdbcType=VARCHAR}
</select>
parameterType:可以是 map 也可以是 String