<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency>
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency>
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3307/community username: root password: 123456
mybatis: mapper-locations: classpath:mappers/*xml type-aliases-package: com.zjw.swager.mybatis.entity
public class Building { //TypeId是指定这个属性为id,写上这个才可以通过操作数据库中的id属性,否则类似selectById会失效 //并在后面追加类型,此处写的是自动类型 @TableId(type = IdType.AUTO) private long id; private String numbers; private String uints; private String remarks; }
@Mapperpublic interface BuildingMapper extends BaseMapper<Building> {}
//需要继承BaseMapper
@SpringBootApplication//扫描Mapper包下的Mapper接口@MapperScan("com.zjw.mapper")public class Springboottest01Application { public static void main(String[] args) { SpringApplication.run(Springboottest01Application.class, args); }}
@SpringBootTestpublic class demo1 { @Autowired private BuildingMapper buildingMapper; @Test public void test01(){ Building building = buildingMapper.selectById(1); System.out.println("building = " + building); }}
输出结果:
building = Building{id=1, numbers='21栋', uints='1单元', remarks='无'}
测试成功!
// 条件查询 QueryWrapper<Building> queryWrapper = new QueryWrapper<>(); // eq 参数1 给的是表的字段 参2 值// queryWrapper.eq("sid",4);// queryWrapper.eq("sage",40); // queryWrapper 支持链式编程 queryWrapper.eq("sid", 4) .eq("sage", 40); // 条件包装类 会自动完成 sql的条件 拼接 // SELECT sid,s_name,sage,ssex,sphone FROM t_student WHERE (sid = ? AND sage = ?) Building building = buildingMapper.selectOne(queryWrapper); System.out.println("building = " + building);
复杂的查询条件时使用QueryWrapper条件构造器
01 添加mybatis-plus的依赖
02 配置数据库连接要素
03 写自己的mapper 继承 mp 的BaseMapper 要给泛型
04 需要在启动类中扫描mapper包
新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
因此需要添加MybatisPlusConfig配置类进行设置
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
// 拦截器添加分页插件
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return mybatisPlusInterceptor;
}
}
@Testpublic void test02(){ QueryWrapper<Building> qr = new QueryWrapper<>(); qr.lt("id",100); IPage<Building> page1 = new Page<>(1,4); IPage<Building> page = buildingMapper.selectPage(page1, qr); System.out.println("page = " + page.getRecords());}
输出结果:
page = [Building{id=1, numbers='21栋', uints='1单元', remarks='无'}, Building{id=7, numbers='17栋', uints='2单元', remar。。。。。。
测试成功!
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency>
这里的swagger版本建议用低一些的版本,高版本有兼容性问题!
Failed to start bean ‘documentationPluginsBootstrapper’ 把springboot 版本改成2.6.0 以下版本就可以
若有版本问题:
将依赖改成依赖集合
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>
原先的Swagger的两个依赖不再需要
同时配置中的@EnableSwagger2也不再需要加上,以下为可选项
//@EnableSwagger2
@EnableOpenApi//可以不写
swagger需要配置类设置API文档信息
//1. 配置类@Configuration//2. 开启swagger支持//@EnableSwagger2@EnableOpenApi//swagger3.0依赖 可以不写public class SwaggerApp { /** * 3、自动创建Docket文档摘要对象 */ @Bean public Docket createRestApi(){ return new Docket(DocumentationType.SWAGGER_2) // 选择swagger的版本,这里若选的3.0则要用OAS_30 // 配置文档信息:swagger文档的标题、版本、描述 .apiInfo(this.apiInfo()) .select() // 配置要生成swagger文档的扫描的目录包 .apis(RequestHandlerSelectors.basePackage("com.woniu.web")) // 对指定路径下的任意类生成文档 .paths(PathSelectors.any()) // 创建对象 .build(); } private ApiInfo apiInfo(){ return new ApiInfoBuilder() // 指定文档标题 (在swagger页面会显示) .title("SpringBoot中使用Swagger构建接口文件") // 指定文档的版本 .version("1.0") // 文档描述 .description("API描述").build(); }}
//实体类上的注解@ApiModel(description = "建筑类实体")public class Building { //TypeId是指定这个属性为id,写上这个才可以通过操作数据库中的id属性,否则类似selectById会失效 //并在后面追加类型,此处写的是自动类型 @TableId(type = IdType.AUTO) //实体类中属性的注解 @ApiModelProperty("主键id") private long id; @ApiModelProperty("楼栋号") private String numbers; @ApiModelProperty("单元号") private String uints; @ApiModelProperty("备注") private String remarks;
@Mapperpublic interface BuildingMapper extends BaseMapper<Building> {}
需要继承BaseMapper
public interface BuildingService extends IService<Building> {}
需要继承IService
@Servicepublic class BuildingServiceImpl extends ServiceImpl<BuildingMapper, Building> implements BuildingService {}
在实现BuildingService的同时,还要继承ServiceImpl<BuildingMapper ,Building>
@RestController/est风格注解,替代@Controller和@ResponseBody@RequestMapping("/building") 设置访问路径@Api(tags = "楼栋管理")//swagger注解,解释controller的功能public class BuildingController { @Autowired//自动注入 private BuildingService buildingService; @GetMapping public void selectAllBuilding(){ List<Building> list = buildingService.list(); System.out.println("list = " + list);}}
swagger3.0访问路径:http://localhost:8080/swagger-ui/
swagger2访问路径:http://localhost:8080/swagger-ui.html
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.2</version></dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId></dependency>
当前包未传递依赖 MP 包,需要自己引入!
public static void main(String[] args) { FastAutoGenerator.create( "jdbc:mysql://localhost:3306/spring_db", "root", "root") // 全局配置 .globalConfig(builder -> { builder.author("yellow Docter") // 设置作者 .enableSwagger() // 开启 swagger 模式 .outputDir("C:\java_lesson\pro\springboot_auto\src\main\java"); // 指定输出目录 }) // 包配置 .packageConfig(builder -> { builder.parent("com.wn") // 设置父包名 .controller("controller") //controller .service("service") //service .serviceImpl("service.impl") .mapper("mapper") .xml("mapper") .entity("entity"); }) //表的配置 .strategyConfig(builder -> { builder.addInclude("user"); // 设置需要生成的表名 }) .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板 .execute(); System.out.println("成功了..."); }
配置好生成代码类后直接运行类中主方法
即可生成
注意设置包名及路径