springboot+mybatis-plus代码自动生成+swagger项目简单创建和分页模糊查询及添加数据默认值设置及CRUD

2022-07-29 08:06:31

创建项目 不要选Native 不然后构建的比较慢 还会发生版本兼容问题

在这里插入图片描述
选择插件和一般要使用得包
在这里插入图片描述
配置myslq

#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver mysql最新驱动#spring.datasource.driver-class-name=com.mysql.jdbc.Driver  mysql老驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/htglxt?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5

在这里插入图片描述

<!--        mybatis-plus +代码自动生成包--><!-- MP 核心库 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><!--MP代码自动生成工具类--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.3.0</version></dependency><!-- 模板 velocity Mybatis Plus 代码生成器需要 --><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>1.7</version></dependency><!--        mybatis-plus +代码自动生成包--><!--swagger --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><!--swagger ui--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.7.0</version></dependency>

注意2.7.0swagger 高于2.5.6的springboot不支持

所以要降版本
在这里插入图片描述

importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.annotation.FieldFill;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.generator.AutoGenerator;importcom.baomidou.mybatisplus.generator.config.DataSourceConfig;importcom.baomidou.mybatisplus.generator.config.GlobalConfig;importcom.baomidou.mybatisplus.generator.config.PackageConfig;importcom.baomidou.mybatisplus.generator.config.StrategyConfig;importcom.baomidou.mybatisplus.generator.config.po.TableFill;importcom.baomidou.mybatisplus.generator.config.rules.DateType;importcom.baomidou.mybatisplus.generator.config.rules.NamingStrategy;importorg.junit.jupiter.api.Test;importjava.util.ArrayList;publicclassCodeGenerator{@TestpublicvoidgenCode(){//数据库前缀String prefix="";//业务模块名称String moduleName="demoz";//模块名String sqlName="demoz";//数据库名称// 1、创建代码生成器AutoGenerator mpg=newAutoGenerator();// 2、全局配置GlobalConfig gc=newGlobalConfig();String projectPath=System.getProperty("user.dir");//获取相对路径
        gc.setOutputDir(projectPath+"/src/main/java");
        gc.setAuthor("fzy");//设置创始人
        gc.setOpen(false);//生成后是否打开资源管理器//重要
        gc.setFileOverride(false);//重新生成时文件是否覆盖

        gc.setServiceName("%sService");//去掉Service接口的首字母I
        gc.setIdType(IdType.AUTO);//主键策略
        gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
        gc.setSwagger2(true);//开启Swagger2模式
        mpg.setGlobalConfig(gc);// 3、数据源配置DataSourceConfig dsc=newDataSourceConfig();
        dsc.setUrl("jdbc:mysql://127.0.0.1:3306/"+ prefix+""+ sqlName+"?serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("root");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);// 4、包配置PackageConfig pc=newPackageConfig();
        pc.setModuleName(moduleName);//模块名
        pc.setParent("com.example");
        pc.setController("controller");
        pc.setEntity("entity");
        pc.setService("service");
        pc.setMapper("mapper");
        mpg.setPackageInfo(pc);// 5、策略配置StrategyConfig strategy=newStrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
        strategy.setTablePrefix("xb_");//设置表前缀不生成
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
        strategy.setEntityLombokModel(true);// lombok 模型 @Accessors(chain = true) setter链式操作
        strategy.setLogicDeleteFieldName("deleted");//逻辑删除字段名
        strategy.setEntityBooleanColumnRemoveIsPrefix(true);//去掉布尔值的is_前缀//自动填充TableFill gmtCreate=newTableFill("createtime",FieldFill.INSERT);TableFill gmtModified=newTableFill("updatetime",FieldFill.INSERT_UPDATE);ArrayList<TableFill> tableFills=newArrayList<>();
        tableFills.add(gmtCreate);
        tableFills.add(gmtModified);
        strategy.setTableFillList(tableFills);

        strategy.setRestControllerStyle(true);//restful api风格控制器
        strategy.setControllerMappingHyphenStyle(true);//url中驼峰转连字符
        mpg.setStrategy(strategy);//设置BaseEntity//        strategy.setSuperEntityClass("com.atguigu.guli.service.base.model.BaseEntity"); 填写BaseEntity中的公共字段//        strategy.setSuperEntityColumns("id", "gmt_create", "gmt_modified");// 6、执行
        mpg.execute();}}

swagger配置文件

importcom.google.common.base.Predicates;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importspringfox.documentation.builders.ApiInfoBuilder;importspringfox.documentation.builders.PathSelectors;importspringfox.documentation.service.ApiInfo;importspringfox.documentation.service.Contact;importspringfox.documentation.spi.DocumentationType;importspringfox.documentation.spring.web.plugins.Docket;importspringfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration@EnableSwagger2publicclassSwagger2Config{@BeanpublicDocketwebApiConfig(){returnnewDocket(DocumentationType.SWAGGER_2).groupName("webApi").apiInfo(webApiInfo()).select().paths(Predicates.and(PathSelectors.regex("/api/.*")))//过滤  只显示地址中有api的.build();}@BeanpublicDocketconsoleApiConfig(){returnnewDocket(DocumentationType.SWAGGER_2).groupName("consoleApi").apiInfo(consoleApiInfo()).select().paths(Predicates.and(PathSelectors.regex("/console/.*")))//过滤  只显示地址中有admin的.build();}privateApiInfowebApiInfo(){returnnewApiInfoBuilder().title("同城配送前端").description("网站描述").version("1.0版本").contact(newContact("联系人",null,"邮箱")).build();}privateApiInfoconsoleApiInfo(){returnnewApiInfoBuilder().title("同城配送后端项目接口").description("网站描述").version("1.0版本").contact(newContact("联系人",null,"邮箱")).build();}}

项目后期配置swagger注意点

1.切换swagger版本,从2.9.2到2.7.0,切换版本的同时清除浏览器缓存
2.@EnableSwagger2 加swagger配置类 上在如果未使用则@EnableSwagger2在启动类加
3.拦截器过滤swagger权限
4.@Accessors(chain=true) (链式)会和swagger的注解产生了冲突,导致swagger获取不到实体类的属性

点击解决方法

mybatis-plus配置文件

@EnableTransactionManagement//事务处理@Configuration@MapperScan({"com.ics.intra.mapper","com.ics.intra.api.mapper"})publicclassMyBatisPlusConfig{/**
     * 乐观锁插件
     */@BeanpublicOptimisticLockerInterceptoroptimisticLockerInterceptor(){returnnewOptimisticLockerInterceptor();}/**
     * 分页插件
     */@BeanpublicPaginationInterceptorpaginationInterceptor(){returnnewPaginationInterceptor();}}

自动生成的xml不在资源文件夹里所以mop文件要设置下

在这里插入图片描述

<resources><resource><directory>${basedir}/src/main/webapp</directory><!-- 注意此次必须要放在此目录下才能被访问到 --><targetPath>META-INF/resources</targetPath><includes><include>**/**</include></includes></resource><resource><directory>${basedir}/src/main/resources</directory><includes><include>**/*.yml</include><include>**/*.properties</include><include>**/*.xml</include><include>**/*.pem</include></includes></resource><resource><directory>src/main/java</directory><includes><include>**/*.xml</include><include>**/**/*.xml</include></includes></resource></resources>

分页查询模糊查询案例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加数据和自动装配数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

根据id删除 数据

在这里插入图片描述

get post 正确写法restFull风格

在这里插入图片描述

转发重定向

默认是转发 地址栏不变
加redirect 重定向 地址栏会变化
在这里插入图片描述

前端传值用对象接

在这里插入图片描述

mybatis-plus分页查询配置及乐观锁配置

在这里插入图片描述
乐观锁数据库需要加version字段

@Version
private Integer version;

在这里插入图片描述

mybatis-plus逻辑删除配置

在这里插入图片描述
乐观锁数据库需要加version字段

@TableLogic
private Integer deleted;

配置好了就会走更新操作 deleted变1 查询也查询不到
在这里插入图片描述

  • 作者:虚构的乌托邦
  • 原文链接:https://blog.csdn.net/m0_50302965/article/details/123062190
    更新时间:2022-07-29 08:06:31