我主要负责学生端的开发;
首先设计数据库表,编写实体类与Mapper;
ublic class Users implements Serializable {
private Long id;
private LocalDateTime gmtCreate;
private LocalDateTime gmtModified;
private Integer statusId;
private String mobile;
private String mobileSalt;
private String mobilePsw;
private String nickname;
private Integer userSex;
private Integer userAge;
private String userHead;
private String remark;
private String studentNumber;
private String school;
private static final long serialVersionUID = 1L;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public LocalDateTime getGmtCreate() {
return gmtCreate;
}
public void setGmtCreate(LocalDateTime gmtCreate) {
this.gmtCreate = gmtCreate;
}
public LocalDateTime getGmtModified() {
return gmtModified;
}
public void setGmtModified(LocalDateTime gmtModified) {
this.gmtModified = gmtModified;
}
public Integer getStatusId() {
return statusId;
}
public void setStatusId(Integer statusId) {
this.statusId = statusId;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile == null ? null : mobile.trim();
}
public String getMobileSalt() {
return mobileSalt;
}
public void setMobileSalt(String mobileSalt) {
this.mobileSalt = mobileSalt == null ? null : mobileSalt.trim();
}
public String getMobilePsw() {
return mobilePsw;
}
public void setMobilePsw(String mobilePsw) {
this.mobilePsw = mobilePsw == null ? null : mobilePsw.trim();
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname == null ? null : nickname.trim();
}
public Integer getUserSex() {
return userSex;
}
public void setUserSex(Integer userSex) {
this.userSex = userSex;
}
public Integer getUserAge() {
return userAge;
}
public void setUserAge(Integer userAge) {
this.userAge = userAge;
}
public String getUserHead() {
return userHead;
}
public void setUserHead(String userHead) {
this.userHead = userHead == null ? null : userHead.trim();
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark == null ? null : remark.trim();
}
public String getStudentNumber() {return studentNumber;}
public void setStudentNumber(String studentNumber) {this.studentNumber = studentNumber;}
public String getSchool() {return school;}
public void setSchool(String school) {this.school = school;}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", gmtCreate=").append(gmtCreate);
sb.append(", gmtModified=").append(gmtModified);
sb.append(", statusId=").append(statusId);
sb.append(", mobile=").append(mobile);
sb.append(", mobileSalt=").append(mobileSalt);
sb.append(", mobilePsw=").append(mobilePsw);
sb.append(", nickname=").append(nickname);
sb.append(", userSex=").append(userSex);
sb.append(", userAge=").append(userAge);
sb.append(", userHead=").append(userHead);
sb.append(", remark=").append(remark);
sb.append(", studentNumber=").append(studentNumber);
sb.append(", school=").append(school);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
}
package com.roncoo.education.user.dao.impl.mapper;
import com.roncoo.education.user.dao.impl.mapper.entity.Users;
import com.roncoo.education.user.dao.impl.mapper.entity.UsersExample;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface UsersMapper {
int countByExample(UsersExample example);
int deleteByExample(UsersExample example);
int deleteByPrimaryKey(Long id);
int insert(Users record);
int insertSelective(Users record);
List<Users> selectByExample(UsersExample example);
Users selectByPrimaryKey(Long id);
int updateByExampleSelective(@Param("record") Users record, @Param("example") UsersExample example);
int updateByExample(@Param("record") Users record, @Param("example") UsersExample example);
int updateByPrimaryKeySelective(Users record);
int updateByPrimaryKey(Users record);
}
2. FeignUsersBiz.java
package com.roncoo.education.user.feign.biz;
import cn.hutool.core.collection.CollUtil;
import com.roncoo.education.common.core.tools.BeanUtil;
import com.roncoo.education.common.service.BaseBiz;
import com.roncoo.education.user.dao.UsersDao;
import com.roncoo.education.user.dao.impl.mapper.entity.Users;
import com.roncoo.education.user.feign.interfaces.vo.UsersVO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotNull;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component
@RequiredArgsConstructor
public class FeignUsersBiz extends BaseBiz {
@NotNull
private final UsersDao dao;
public UsersVO getById(Long id) {
Users record = dao.getById(id);
return BeanUtil.copyProperties(record, UsersVO.class);
}
public Map<Long, UsersVO> listByIds(List<Long> userIdList) {
List<Users> usersList = dao.listByIds(userIdList);
if (CollUtil.isNotEmpty(usersList)) {
return usersList.stream().collect(Collectors.toMap(item -> item.getId(), item -> BeanUtil.copyProperties(item, UsersVO.class)));
}
return new HashMap<>();
}
}
这段代码定义了一个名为 `FeignUsersBiz` 的业务逻辑类,负责用户数据的获取和处理。
1. **包声明和导入语句**:
- 该类位于 `com.roncoo.education.user.feign.biz` 包中。
- 导入了多个包和类,包括 Hutool 工具库、项目内部的工具和服务类、Spring 框架以及 Java 标准库。
2. **类注解和继承**:
- `@Component` 注解表明这个类是一个 Spring 组件,由 Spring 容器管理。
- `@RequiredArgsConstructor` 注解(来自 Lombok 库)自动生成一个包含所有 `final` 字段的构造函数。
- 该类继承自 `BaseBiz` 类,这意味着它是一个业务逻辑层类,可能包含一些通用的业务逻辑功能。
3. **字段定义**:
- `@NotNull` 注解用于确保 `dao` 字段不能为空。
- `dao` 字段是 `UsersDao` 类型,表示数据访问对象,用于与数据库进行交互。
- `final` 关键字表明这个字段在初始化后不可更改。
4. **`getById` 方法**:
- 接受一个用户 ID 作为参数。
- 使用 `dao` 的 `getById` 方法从数据库中获取对应的用户记录。
- 将用户记录转换为 `UsersVO` 对象(VO 即 Value Object,值对象),并返回。
- 使用 `BeanUtil.copyProperties` 方法将用户记录的属性复制到 `UsersVO` 对象中。
5. **`listByIds` 方法**:
- 接受一个用户 ID 列表作为参数。
- 使用 `dao` 的 `listByIds` 方法从数据库中获取对应的用户记录列表。
- 如果结果列表不为空,使用 Java 8 流(Stream)将用户列表转换为一个 Map,其中键是用户 ID,值是 `UsersVO` 对象。
- 如果结果列表为空,返回一个空的 HashMap。
- 使用 Hutool 库的 `CollUtil.isNotEmpty` 方法来判断集合是否为空。