SpringMVC实现控制层控制选择用户可见的数据
主要目录结构如上图,需要修改编辑的文件大致有6个
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------UserController.javaU
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.miaoshaproject.controller;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.miaoshaproject.controller.viewobject.UserVO;
import com.miaoshaproject.service.UserService;
import com.miaoshaproject.service.model.UserModel;
//名为user的控制器
@Controller("user")
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/get")
@ResponseBody
public UserVO getUser(@RequestParam(name="id")Integer id){
//调用service服务获取对应id的用户对象,给前端
UserModel userModel=userService.getUserById(id);
//返回前端可视模型
return convertFromModel(userModel);
}
//转化核心模型为前端可视模型
private UserVO convertFromModel(UserModel userModel) {
if(userModel==null) {
return null;
}
UserVO userVO=new UserVO();
BeanUtils.copyProperties(userModel,userVO);
return userVO;
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
UserService.java
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.miaoshaproject.service;
import com.miaoshaproject.service.model.UserModel;
public interface UserService {
//获取用户对象的方法
UserModel getUserById(Integer id);
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
UserServiceImpl.java
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.miaoshaproject.service.impl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.miaoshaproject.dao.UserDoMapper;
import com.miaoshaproject.dao.UserPasswordDoMapper;
import com.miaoshaproject.dataobject.UserDo;
import com.miaoshaproject.dataobject.UserPasswordDo;
import com.miaoshaproject.service.UserService;
import com.miaoshaproject.service.model.UserModel;
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserDoMapper userDoMapper;
@Autowired
private UserPasswordDoMapper userPasswordDoMapper;
public UserModel getUserById(Integer id) {
//UserDo不会透露给前端
UserDo userDo=userDoMapper.selectByPrimaryKey(id);
if(userDo==null) {
return null;
}
//获取加密密码
UserPasswordDo userPasswordDo=userPasswordDoMapper.selectByUserId(userDo.getId());
return convertFromDataObject(userDo,userPasswordDo);
}
private UserModel convertFromDataObject(UserDo userDo,UserPasswordDo userPasswordDo) {
if(userDo==null) {
return null;
}
UserModel userModel=new UserModel();
BeanUtils.copyProperties(userDo, userModel);
if(userPasswordDo!=null) {
userModel.setEncrptPassword(userPasswordDo.getEncrptPassword());
}
return userModel;
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
UserModel.java
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.miaoshaproject.service.model;
//Model才是核心
public class UserModel {
private Integer id;
private String name;
private Byte gender;
private Integer age;
private String telphone;
private String registerMode;
private String thirdPartyId;
private String encrptPassword;
public String getEncrptPassword() {
return encrptPassword;
}
public void setEncrptPassword(String encrptPassword) {
this.encrptPassword = encrptPassword;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Byte getGender() {
return gender;
}
public void setGender(Byte gender) {
this.gender = gender;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getTelphone() {
return telphone;
}
public void setTelphone(String telphone) {
this.telphone = telphone;
}
public String getRegisterMode() {
return registerMode;
}
public void setRegisterMode(String registerMode) {
this.registerMode = registerMode;
}
public String getThirdPartyId() {
return thirdPartyId;
}
public void setThirdPartyId(String thirdPartyId) {
this.thirdPartyId = thirdPartyId;
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
UserPasswordDoMapper.java添加一行代码
UserPasswordDo selectByUserId(Integer userId);
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
UserVO.java
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.miaoshaproject.controller.viewobject;
//给前端能看到的信息
public class UserVO {
private Integer id;
private String name;
private Byte gender;
private Integer age;
private String telphone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Byte getGender() {
return gender;
}
public void setGender(Byte gender) {
this.gender = gender;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getTelphone() {
return telphone;
}
public void setTelphone(String telphone) {
this.telphone = telphone;
}
}