本页导航
article
MyBatis Plus使用
AI摘要
MyBatis Plus 快速入门指南,包含 Maven 依赖配置和基础 CRUD 操作
提示
maven依赖
xml com.baomidou mybatis-plus-boot-starter 3.5.3.2 yml配置 yaml mybatis-plus: configuration: map-underscore-to-camel-case: false log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: logic-delete-field: isDelete # 全局逻辑删除的实体字段名 logic-delete-value: 1 # 逻辑已删除值(默认为 1) logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)常用CRUD及基本流程
基本流程 mapper.xml => mapper => serviceImpl => service => controller => 前端
CRUD使用
mapper,mapper.xml及基本的service层由MybatisX生成,基本使用直接在controller层调用即可,如下
@GetMapping("/")
public Website listConfig() {
QueryWrapper<Website> queryWrapper = new QueryWrapper<>();
queryWrapper.select("config");
return websiteService.getOne(queryWrapper);
}
也可在service层自定义接口,serviceImpl层写具体逻辑,controller层调用
// service层
boolean userLogin(String userAccount, String userPassword);
// serviceImpl层
@Override
public boolean userLogin(String userAccount, String userPassword) {
//密码字段加密
String encryptPassword = DigestUtils.md5DigestAsHex((SALT + userPassword).getBytes());
User user = new User();
user.setUserAccount(userAccount);
user.setUserPassword(encryptPassword);
return this.save(user);
}
//controller层调用
@PostMapping("/add")
public Result<String> add(@Validated @RequestBody UserQueryRequest userQueryRequest) {
String userAccount = userQueryRequest.getUserAccount();
String password = userQueryRequest.getUserPassword();
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("userAccount",userAccount);
Long count = userService.count(wrapper);
if(count > 0){
return Result.handle(ErrorCode.OPERATION_ERROR.getCode(),ErrorCode.OPERATION_ERROR.getMessage(), Collections.singletonList("账户已存在"));
}
boolean result = userService.userLogin(userAccount,password);
if (result) {
return Result.success("保存成功");
} else {
return Result.failure(ErrorCode.SYSTEM_ERROR);
}
}
自定义错误码及错误封装
1.2.1 自定义错误码
// 自定义错误码
public enum ErrorCode {
//错误代码
PARAMS_ERROR(40000, "请求参数错误",""),
NOT_LOGIN_ERROR(40100, "未登录", ""),
NO_AUTH_ERROR(40101, "权限不足,请用管理员账号登录", ""),
NOT_FOUND_ERROR(40400, "请求数据不存在", ""),
FORBIDDEN_ERROR(40300, "禁止访问", ""),
SYSTEM_ERROR(50000, "系统错误", ""),
NOT_EQUALS(66666,"两次密码不一致",""),
OPERATION_ERROR(50001, "操作失败", "");
/**
* 状态码
*/
private final int code;
/**
* 信息
*/
private final String message;
/**
* 数据
*/
private final String data;
// 构造函数,该构造函数需要传入一个整数代码、消息和数据字符串。
ErrorCode(int code, String message, String data) {
this.code = code;
this.message = message;
this.data = data;
}
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
public String getData() {
return data;
}
}
1.2.2 自定义返回类
加载中...
