实体类Po
@EqualsAndHashCode(callSuper = true):生成 equals() 和 hashCode() 方法,以便在比较对象时考虑父类的字段。
@Data:自动生成 Java 类中的一些标准方法,如 toString()、hashCode()、equals()、getter 和 setter 方法。
@TableName(“table_user”):MyBatis-Plus 中的注解,用于将实体类与数据库表进行映射,指定实体类对应的数据库表名称。
private static final long serialVersionUID = 1L;:确保序列化和反序列化过程中类的版本一致性。
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("table_user")
public class userPo extends BasePo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer userId;
private String userName;
private String userPassword;
}
请求实体类
private static final long serialVersionUID = 1L;:确保序列化和反序列化过程中类的版本一致性。
@NotNull:在对象校验中使用,用于验证一个对象引用是否为 null,不对其包含的属性进行进一步校验。
@NotBlank:用于检查一个字符串是否为非空或长度大于0(去掉前后空格后)。适用于字符串类型的字段。空格不算有效字符。
@Valid:对嵌套对象或集合中的元素也进行一一验证。
@Data
public class UserReq implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "用户Id不能为空")
private Long userId;
@NotBlank(message = "用户名不能为空")
@Size(max = 10,message = "用户名不能超过10字符")
private String userName;
@Valid
private List<Class> userClassList;
响应实体类
@TableId(value = “id”, type = IdType.AUTO):标记为主键,并设置主键生成策略为自动增长,这样在插入数据时,数据库会自动为 id 字段生成递增的唯一主键值。
@Data
public class UserResp implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long userId;
private String userName;
}
mapper.xml
具体:https://blog.csdn.net/LYly_B/article/details/137500620?spm=1001.2014.3001.5501
<!--固定文件头-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--命名空间-->
<mapper namespace="com.bai.dao.UserMapper">
<!--数据库字段映射-->
<resultMap id="UserResultMap" type="com.bai.pojo.User">
<id property="user_id" column="userId" />
<result property="user_name" column="userName" />
<result property="user_password" column="userPassword" />
</resultMap>
<!--通用查询结果列-->
<sql id="User_List">
user_id, user_name, user_password
</sql>
<!--增删改查语句-->
<insert id="insertUser" parameterType="com.example.model.User">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>
</mapper>
mapper:
@Repository:将该 Mapper 接口标识为一个 Spring Bean,让 Spring 能够扫描并管理这个接口
extends BaseMapper:继承基础mapper中简单增删改查的实现,减少代码量
@Repository
public interface typeMapper extends BaseMapper<typePo> {
List<typeDo> listtype();
versionPo getversionById(String id);
}
Service:
public interface UserService extends IService<UserPo> {
UserResp listUser();
String insertUserClass(UserReq userReq, Integer classId);
}
ServiceImpl:
@Service:标识类为服务层组件(Service)的注解
@Slf4j:简化在 Java 类中添加日志功能的步骤
@Autowired:用于自动装配依赖关系的注解
@Transactional(rollbackFor = Exception.class):标记一个事务,中间有任何步骤失败了都会整个回退。
@Service
@Slf4j
public class UserServiceImpl extends ServiceImpl<UserMapper, UserPo> implements UserService {
@Autowired
UserMapper userMapper;
@Autowired
RedisCacheUtils cacheUtils;
@Transactional(rollbackFor = Exception.class)
@Override
public UserResp listUser() {
UserResp userResp = new UserResp();
//业务代码
if (某业务出错) {
log.error("XXX业务有误", 错误参数);
throw new BusinessException("XXX业务有误");
}
//业务代码
return userResp;
}
}
controller:
@RestController:用于处理HTTP请求,返回JSON数据作为响应。
@RequestMapping(“/index”):指定控制器可以处理哪些url请求。
@Slf4j:用于管理和输出日志。
@RestController
@RequestMapping("/index")
@Slf4j
public class UserController {
@Autowired
UserService userService;
@Autowired
RedisCacheUtils cacheUtils;
@Autowired
private RabbitmqUtil rabbitmqUtil;
@Autowired
private SaveEventLogUtil saveEventLogUtil;
@Autowired
RabbitmqProperties rabbitmqProperties;
@PostMapping("/user")
public JSONObject getUserList() {
return CommonUtil.successJson(userService.listUser());
}
@PostMapping("/insertUserClass")
public JSONObject update(@RequestBody @Valid UserReq userReq, HttpServletRequest request) {
JWTToken jwtToken = jwtTokenUtil.getUser(request);
return CommonUtil.successJson(userService.insertUserClass(userReq,jwtToken.getId()));
}
}