# mybatis-plus-jpa-web
**Repository Path**: mybatis-plus-jpa/mybatis-plus-jpa-web
## Basic Information
- **Project Name**: mybatis-plus-jpa-web
- **Description**: mybatis-plus和jpa的混合项目,支持自动建表,同时集成了knife4j、sa-token
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-07-09
- **Last Updated**: 2025-09-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 介绍
mybatis-plus和jpa的混合项目,支持自动建表,同时集成了knife4j(内置增强功能)、sa-token(内置增强功能)
## Maven引用[点击此处查看最新版本号](https://central.sonatype.com/artifact/com.xiaoyudeguang/mybatis-plus-jpa-boot)
```xml
com.xiaoyudeguang
mybatis-plus-jpa-boot
${最新版本}
io.github.xiaoyudeguang
easy-satoken
1.0.5
```
如果想要按需引入组件,可以选择引入 _mybatis-plus-jpa-web_ 后自行引入其他包。
```xml
com.xiaoyudeguang
mybatis-plus-jpa-web
${最新版本}
```
## 使用教程
### 1. 使用jpa自动建表
#### 1.1 在yml中添加配置
```
spring:
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
enable_lazy_load_no_trans: true
schema_update:
unique_constraint_strategy: RECREATE_QUIETLY
```
#### 1.2 启动类增加@EntityScan注解
```
@EntityScan(basePackages = {"com.*.model", "com.**.model"})
```
#### 1.3实体类增加@Entity注解
```
@Entity
@TableName("sys_user")
public class SysUser {
}
```
### 2. 内置knife4j增强功能使用示例(可独立使用)
```java
import com.example.model.SysUser;
import com.example.service.UserService;
import com.xiaoyudeguang.annotations.RequestMapping;
import com.xiaoyudeguang.annotations.RestController;
import com.xiaoyudeguang.controller.AbstractController;
import com.xiaoyudeguang.response.ResultDto;
import io.swagger.v3.oas.annotations.Parameter;
import org.springframework.web.bind.annotation.RequestParam;
@RestController(value = "/user", tags = "用户接口", author = "赵光")
public class UserController {
@Autowired
private SysUserService sysUserService;
@RequestMapping(value = "/getUserByUserNo", summary = "根据用户编码查询用户")
public ResultDto getUserByUserNo(@RequestParam(value = "userNo") @Parameter(description = "用户编码") String userNo) {
return ResultDto.ok(sysUserService.getOne(SysUser::getUserNo, userNo));
}
}
```
点击[更多](https://gitee.com/mybatis-plus-jpa/mybatis-plus-jpa-web/wikis/2.使用knife4j功能)查看详细教程
### 3. 内置satoken增强功能使用示例(可独立使用)
```java
import com.example.model.SysUser;
import com.example.service.UserService;
import com.xiaoyudeguang.annotations.RequestMapping;
import com.xiaoyudeguang.annotations.RestController;
import com.xiaoyudeguang.controller.AbstractController;
import com.xiaoyudeguang.response.ResultDto;
import io.swagger.v3.oas.annotations.Parameter;
import org.springframework.web.bind.annotation.RequestParam;
@RestController(value = "/user", tags = "用户接口", author = "赵光")
public class UserController {
@Autowired
private SysUserService sysUserService;
/**
* 会被鉴权的接口(框架本身对satoken做了增强,默认所有接口都会被鉴权)
*/
@RequestMapping(value = "/getUserByUserNo", summary = "根据用户编码查询用户", permission = "query")
public ResultDto getUserByUserNo(@RequestParam(value = "userNo") @Parameter(description = "用户编码") String userNo) {
return ResultDto.ok(sysUserService.getOne(SysUser::getUserNo, userNo));
}
/**
* 不会被鉴权的接口(只需要将@RequestMapping注解的checkAuth属性值设置为false)
*/
@RequestMapping(value = "/getUserByUserNo", summary = "根据用户编码查询用户", checkAuth = false)
public ResultDto getUserByUserNo(@RequestParam(value = "userNo") @Parameter(description = "用户编码") String userNo) {
return ResultDto.ok(sysUserService.getOne(SysUser::getUserNo, userNo));
}
}
```
点击[更多](https://gitee.com/mybatis-plus-jpa/mybatis-plus-jpa-web/wikis/3.使用satoken功能)查看详细教程
### 4. 使用框架抽象层功能
#### 4.1 实体类继承BaseEntity类
```
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.xiaoyudeguang.entity.BaseEntity;
import com.xiaoyudeguang.annotation.JsonField;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import lombok.*;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.type.SqlTypes;
import java.io.Serial;
import java.util.Map;
@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("sys_user")
public class SysUser extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
@Column(name = "user_no", columnDefinition = "varchar(100) not null comment '编码'")
private String userNo;
@Column(name = "user_name", columnDefinition = "varchar(100) not null comment '姓名'")
private String userName;
@Column(name = "age", columnDefinition = "varchar(100) not null comment '年龄'")
private Integer age;
@Column(name = "address", columnDefinition = "varchar(100) not null comment '地址'")
private String address;
}
```
#### 4.2 Mapper层继承AbstractMapper接口
```
import com.example.model.SysUser;
import com.xiaoyudeguang.annotation.Mapper;
import com.xiaoyudeguang.mapper.AbstractMapper;
@Mapper
public interface SysUserMapper extends AbstractMapper {
}
```
#### 4.3 Service层继承AbstractService接口
```java
import com.example.mapper.SysUserMapper;
import com.example.model.SysUser;
import com.xiaoyudeguang.service.AbstractService;
public interface UserService extends AbstractService {
}
```
#### 4.4 Service实现层继承AbstractServiceImpl接口
```java
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.mapper.SysUserMapper;
import com.example.model.SysUser;
import com.example.service.UserService;
import com.xiaoyudeguang.service.impl.AbstractServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends AbstractServiceImpl implements UserService {
@Override
public LambdaQueryWrapper getLambdaWrapper(SysUser query) {
LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(StringUtils.isNotBlank(query.getUserNo()), SysUser::getUserNo, query.getUserNo());
lambdaQueryWrapper.like(StringUtils.isNotBlank(query.getUserName()), SysUser::getUserName, query.getUserName());
lambdaQueryWrapper.like(StringUtils.isNotBlank(query.getAddress()), SysUser::getAddress, query.getAddress());
return lambdaQueryWrapper;
}
}
```
#### 4.5 Controler层继承AbstractController类
```java
import com.example.model.SysUser;
import com.example.service.UserService;
import com.xiaoyudeguang.annotations.RequestMapping;
import com.xiaoyudeguang.annotations.RestController;
import com.xiaoyudeguang.exception.BusinessException;
import com.xiaoyudeguang.controller.AbstractController;
import com.xiaoyudeguang.response.BaseResult;
import com.xiaoyudeguang.util.JsonWrapper;
import com.xiaoyudeguang.wrapper.JsonLambdaQueryWrapper;
import io.swagger.v3.oas.annotations.Parameter;
import org.springframework.web.bind.annotation.RequestParam;
@RestController(value = "/user", tags = "用户接口", author = "赵光")
public class UserController extends AbstractController {
}
```
## [示例源码](https://gitee.com/mybatis-plus-jpa/mybatis-plus-jpa-boot-demo)
