在pom.xml中引入mybatis plus的jar包
<!-- mybatis plus依赖包 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>
在resources/application.yml配置文件中配置数据库
#配置数据库
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/jeff?characterEncoding=utf8
username: root
password: mysql
创建BaseEntity实体类
package com.jeff.mybatis.plus.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
@Data
public class BaseEntity {
// 主键
@TableId(type = IdType.AUTO)
private Long id;
// 创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
// 创建人
private String createName;
// 修改时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date modifyTime;
// 修改人
private String modifyName;
}
创建User实体类
package com.jeff.mybatis.plus.entity;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeff.mybatis.plus.utils.DateUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@TableName("sys_user")
@EqualsAndHashCode(callSuper = false)
public class User extends BaseEntity {
// 登陆名
private String loginName;
// 密码
private String password;
// 盐
private String salt;
// 性别(0:保密;1:男;2:女)
private Integer sex;
// 状态(0:有效;1:无效)
private Integer status;
// 真实姓名
private String name;
// 昵称
private String nickName;
// 手机号
private String phone;
// 邮箱
private String email;
// 生日
@TableField(updateStrategy = FieldStrategy.IGNORED)
@DateTimeFormat(pattern = DateUtils.SHORT_TIME_FORMAT)
@JsonFormat(pattern = DateUtils.SHORT_TIME_FORMAT, timezone = "GMT+8")
private Date birthday;
// 用户头像
private String headimgUrl;
}
创建UserMapper
package com.jeff.mybatis.plus.mapper;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jeff.mybatis.plus.entity.User;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
创建UserService
package com.jeff.mybatis.plus.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jeff.mybatis.plus.entity.User;
import com.jeff.mybatis.plus.entity.request.PageEntity;
import com.jeff.mybatis.plus.entity.request.UserParam;
public interface UserService extends IService<User> {
boolean isExist(User user);
Page<User> getList(PageEntity page, UserParam param);
}
创建UserServiceImpl
package com.jeff.mybatis.plus.service.impl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jeff.mybatis.plus.entity.User;
import com.jeff.mybatis.plus.entity.request.PageEntity;
import com.jeff.mybatis.plus.entity.request.UserParam;
import com.jeff.mybatis.plus.mapper.UserMapper;
import com.jeff.mybatis.plus.service.UserService;
import com.jeff.mybatis.plus.utils.DateUtils;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public Page<User> getList(PageEntity pageEntity, UserParam param) {
Page<User> page = new Page<User>(pageEntity.getPage(), pageEntity.getRows());
QueryWrapper<User> wrapper = new QueryWrapper<User>();
if (StringUtils.isNotBlank(param.getLoginName())) {
wrapper.eq("login_name", param.getLoginName());
}
if (StringUtils.isNotBlank(param.getName())) {
wrapper.like("name", param.getName());
}
if (param.getStartDate() != null) {
wrapper.ge("create_time", DateUtils.getStartOfDay(param.getStartDate()));
}
if (param.getEndDate() != null) {
wrapper.lt("create_time", DateUtils.getEndOfDay(param.getEndDate()));
}
wrapper.orderByDesc("id");
return page(page, wrapper);
}
@Override
public boolean isExist(User user) {
QueryWrapper<User> wrapper = new QueryWrapper<User>();
wrapper.eq("login_name", user.getLoginName());
if (user.getId() != null) {
wrapper.ne("id", user.getId());
}
return count(wrapper) > 0;
}
}
创建UserController
package com.jeff.mybatis.plus.controller;
import java.util.Date;
import org.apache.commons.lang3.Validate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jeff.mybatis.plus.common.Constant;
import com.jeff.mybatis.plus.entity.User;
import com.jeff.mybatis.plus.entity.request.PageEntity;
import com.jeff.mybatis.plus.entity.request.UserParam;
import com.jeff.mybatis.plus.enums.ResponseCodes;
import com.jeff.mybatis.plus.service.UserService;
import com.jeff.mybatis.plus.utils.ResultsUtils;
@CrossOrigin("*")
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
private UserService service;
/**
*
* @description: 新增用户
* @author: Jeff
* @param user
* @return
*/
@PostMapping("add")
public Object add(User user) {
if (service.isExist(user)) {
return ResultsUtils.fail(ResponseCodes.PARAMTER_ERROR, "登录名重复,请重新输入");
}
user.setCreateTime(new Date());
user.setCreateName("Jeff");
service.save(user);
return ResultsUtils.success();
}
/**
*
* @description: 修改用户
* @author: Jeff
* @param user
* @return
*/
@PostMapping("update")
public Object update(User user) {
Validate.notNull(user.getId(), Constant.CHECK_MESSAGE, "用户id");
if (service.isExist(user)) {
return ResultsUtils.fail(ResponseCodes.PARAMTER_ERROR, "登录名重复,请重新输入");
}
user.setModifyTime(new Date());
user.setModifyName("Jeff");
service.updateById(user);
return ResultsUtils.success();
}
/**
*
* @description: 删除用户
* @author: Jeff
* @param id
* @return
*/
@RequestMapping("delete")
public Object delete(Long id) {
Validate.notNull(id, Constant.CHECK_MESSAGE, "用户id");
service.removeById(id);
return ResultsUtils.success();
}
/**
*
* @description: 查看用户
* @author: Jeff
* @param id
* @return
*/
@RequestMapping("getById")
public Object getById(Long id) {
Validate.notNull(id, Constant.CHECK_MESSAGE, "用户id");
return ResultsUtils.success(service.getById(id));
}
/**
*
* @description: 获取用户列表(分页)
* @author: Jeff
* @param page
* @return
*/
@RequestMapping("getList")
public Object getList(PageEntity pageEntity, UserParam param) {
Page<User> page = service.getList(pageEntity, param);
return ResultsUtils.success(page.getRecords(), page.getTotal());
}
}
创建MybatisPlus分页配置类MybatisPlusConfig
package com.jeff.mybatis.plus.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
/**
*
* @description: MybatisPlus分页配置类
* @author: Jeff
*/
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}