# 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) ![输入图片说明](image.png)