1. 程式人生 > >從0到電商——使用者模組

從0到電商——使用者模組

建立返回物件

     根據返回值建立返回物件

     返回值 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