SpringBoot+Mybatisplus+Mybatis+Swagger+代碼自動生成+log4j
1. SpringBoot+Mybatis+MybatisPlus
1.1 mybatisplus依賴+mybatis依賴
<!-- 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>
1.2 配置資訊
1.2.1 yml中datasource配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3307/community
username: root
password: 123456
?
1.2.2 mybatis別名和xml掃描
mybatis:
mapper-locations: classpath:mappers/*xml
type-aliases-package: com.zjw.swager.mybatis.entity
1.3測驗準備
1.3.1撰寫類Building
public class Building {
//TypeId是指定這個屬性為id,寫上這個才可以通過操作資料庫中的id屬性,否則類似selectById會失效
//并在后面追加型別,此處寫的是自動型別
@TableId(type = IdType.AUTO)
private long id;
private String numbers;
private String uints;
private String remarks;
}
1.3.2撰寫Mapper介面BuildingMapper
@Mapper
public interface BuildingMapper extends BaseMapper<Building> {
}
//需要繼承BaseMapper
1.3.3 在springboot啟動類中添加注解掃描Mapper
@SpringBootApplication
//掃描Mapper包下的Mapper介面
@MapperScan("com.zjw.mapper")
public class Springboottest01Application {
public static void main(String[] args) {
SpringApplication.run(Springboottest01Application.class, args);
}
}
1.3.4 撰寫測驗類
@SpringBootTest
public 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='無'}
測驗成功!
1.4 QueryWrapper條件構造器
// 條件查詢
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條件構造器
1.5 小結 整合步驟
01 添加mybatis-plus的依賴
02 配置資料庫連接要素
03 寫自己的mapper 繼承 mp 的BaseMapper \ 要給泛型
04 需要在啟動類中掃描mapper包
1.6 分頁
新的分頁插件,一緩和二緩遵循mybatis的規則,需要設定 MybatisConfiguration#useDeprecatedExecutor = false 避免快取出現問題(該屬性會在舊插件移除后一同移除)
因此需要添加MybatisPlusConfig配置類進行設定
1.6.1 添加配置類,設定攔截器
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
// 攔截器添加分頁插件
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return mybatisPlusInterceptor;
}
}
1.6.2 測驗分頁
@Test
public 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,,,,,,
測驗成功!
2. pringBoot+Mybatisplus+Mybatis+Swagger
2.1依賴
<!-- 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//可以不寫
2.2 配置
swagger需要配置類設定API檔案資訊
2.2.1撰寫swagger配置類
//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();
}
}
2.2.2 通過注解添加API中的內容
2.2.2.1 物體類中
//物體類上的注解
@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;
2.2.2.2 mapper中的設定
@Mapper
public interface BuildingMapper extends BaseMapper<Building> {
}
需要繼承BaseMapper
2.2.2.3 service中的設定
public interface BuildingService extends IService<Building> {
}
需要繼承IService
2.2.2.4ServiceImp中的設定
@Service
public class BuildingServiceImpl extends ServiceImpl<BuildingMapper, Building> implements BuildingService {
}
在實作BuildingService的同時,還要繼承ServiceImpl<BuildingMapper ,Building>
2.2.2.5controller 中的設定及注解
@RestController//rest風格注解,替代@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
3. 整合代碼自動生成(代碼生成器)
3.1 依賴
<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 包,需要自己引入!
3.2 配置代碼生成
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("成功了...");
}
3.3運行
配置好生成代碼類后直接運行類中主方法
即可生成
注意設定包名及路徑
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/499716.html
標籤:Java
下一篇:泛型的簡介說明
