https://mybatis.plus/guide/interceptor.html

第一步配置Bean

  1. @Configuration
  2. @MapperScan("scan.your.mapper.package")
  3. public class MybatisPlusConfig {
  4. /**
  5. * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
  6. */
  7. @Bean
  8. public MybatisPlusInterceptor mybatisPlusInterceptor() {
  9. MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  10. interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
  11. return interceptor;
  12. }
  13. @Bean
  14. public ConfigurationCustomizer configurationCustomizer() {
  15. return configuration -> configuration.setUseDeprecatedExecutor(false);
  16. }
  17. }

Demo 演示

  1. Entity ```java package luban.admin.entity;

import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.luban.base.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank; import java.io.Serializable;

/**

  • 项目测试库
  • *
  • @author 米阳MeYoung
  • @since 2020-10-14 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value = “SysProject对象”, description = “项目测试库”) public class SysProject extends BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = “主键ID”) @TableId(value = “id”, type = IdType.AUTO) private Long id;

    @NotBlank(message = “测试库名不能为空”) @ApiModelProperty(value = “项目测试库名”) @Length(max = 30, message = “测试库名不能操作30个字符!”) private String name;

    @ApiModelProperty(value = “描述”) private String description;

    @ApiModelProperty(value = “默认邮箱”) private String defaultEmail;

    @ApiModelProperty(value = “git地址”) private String gitUrl;

    @ApiModelProperty(value = “git分支名”) private String branchName;

    @ApiModelProperty(value = “类型:1-普通项目,2-公共项目”) private Integer type;

    @ApiModelProperty(value = “是否删除,0:未删除, 1:已删除”) private Boolean deleted;

}

  1. 2. Mapper
  2. Page 参数必须放首个
  3. ```java
  4. package luban.admin.mapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import org.apache.ibatis.annotations.Param;
  7. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  8. import luban.admin.entity.SysProject;
  9. /**
  10. * @author 米阳MeYoung
  11. * @date 2020-10-14
  12. */
  13. public interface SysProjectMapper extends BaseMapper<SysProject> {
  14. IPage<SysProject> listSysProject(IPage<SysProject> page, @Param("project") SysProject sysProject);
  15. }
  1. XML

需要注意, project.name 的project 必须跟Mapper 设置的@Param 一致

  1. <!-- 通用查询结果列 -->
  2. <sql id="Base_Column_List">
  3. id, name, description, create_user, create_time, update_user, update_time, default_email, git_url, branch_name, type, deleted
  4. </sql>
  5. <select id="listSysProject" resultMap="BaseResultMap">
  6. select
  7. <include refid="Base_Column_List"/>
  8. from sys_project
  9. <where>
  10. <if test="project.name !=null and project.name !=''">
  11. AND name like CONCAT('%',#{project.name},'%')
  12. </if>
  13. <if test="project.createUser !=null and project.createUser !=''">
  14. AND create_user = #{project.createUser}
  15. </if>
  16. </where>
  17. </select>
  1. Service

    1. /**
    2. * 分页查询
    3. *
    4. * @param page 页码
    5. * @param pageCount 每页显示数
    6. * @param sysProject SysProject
    7. * @return IPage<SysProject>
    8. */
    9. IPage<SysProject> listSysProject(Integer page, Integer pageCount, SysProject sysProject);
  2. ServiceImpl

    1. @Override
    2. public IPage<SysProject> listSysProject(Integer page, Integer pageCount,SysProject sysProject) {
    3. IPage<SysProject> wherePage = new Page<>(page, pageCount);
    4. return baseMapper.listSysProject(wherePage, sysProject);
    5. }
  3. Contorller

    1. @Log("name模糊查询仓库")
    2. @ApiOperation(value = "name模糊查询仓库")
    3. @GetMapping("name")
    4. public IPage<SysProject> findListByName(@RequestParam Integer page,
    5. @RequestParam Integer pageCount,
    6. @RequestParam String name) {
    7. SysProject sysProject = new SysProject();
    8. sysProject.setName(name);
    9. return sysProjectService.listSysProject(page, pageCount, sysProject);
    10. }