代码实现
创建配置文件 application.yml
, 添加配置信息,配置内容如下,需要改为你实际的信息,如下是我的
# application-dev.yml
server:
port: 8001
spring:
application:
name: service-video
profiles:
active: dev
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/video_db?serverTimezone=GMT+8
username: root
password: root
hikari:
connection-test-query: SELECT 1
connection-timeout: 60000
idle-timeout: 500000
max-lifetime: 540000
maximum-pool-size: 12
minimum-idle: 10
pool-name: HikariPool
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT 8
mybatis-plus:
configuration:
# SQL打印
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
使用代码生成器生成代码
代码语言:java复制/**
* @author BNTang
*/
public class CodeGeneratorTest {
@Test
public void main1() {
// 1、创建代码生成器
AutoGenerator mpg = new AutoGenerator();
// 2、全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir("D:\Develop\IdeaPro\video_parent\service\service_video\src\main\java");
gc.setAuthor("BNTang");
// 生成后是否打开资源管理器
gc.setOpen(false);
// 重新生成时文件是否覆盖
gc.setFileOverride(false);
// mp生成 service 层代码,默认接口名称第一个字母有 I
gc.setControllerName("%sController");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
// 主键策略
gc.setIdType(IdType.ID_WORKER_STR);
// 定义生成的实体类中日期类型
gc.setDateType(DateType.ONLY_DATE);
// 开启Swagger2模式
gc.setSwagger2(true);
mpg.setGlobalConfig(gc);
// 3、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/video_db?serverTimezone=GMT+8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
// 4、包配置
PackageConfig pc = new PackageConfig();
// 模块名
pc.setModuleName("service_video");
pc.setParent("top.it6666");
pc.setController("controller");
pc.setEntity("entity");
pc.setService("service");
pc.setMapper("mapper");
mpg.setPackageInfo(pc);
// 5、策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("video_author");
// 数据库表映射到实体的命名策略,驼峰命名
strategy.setNaming(NamingStrategy.underline_to_camel);
// 生成实体时去掉表前缀
strategy.setTablePrefix("video_");
// 数据库表字段映射到实体的命名策略
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// lombok 模型 @Accessors(chain = true) setter链式操作
strategy.setEntityLombokModel(true);
// restful api风格控制器
strategy.setRestControllerStyle(true);
// url中驼峰转连字符
strategy.setControllerMappingHyphenStyle(true);
mpg.setStrategy(strategy);
// 6、执行
mpg.execute();
}
}
如上的配置需要你自行修改为你自己的如上还是那句话是我的实际信息,配置完毕了之后运行启动即可完成生成, 生成完毕之后删除生成器的 java
文件即可
获取作者列表功能
创建入口文件 service_video
模块启动类,需要注意的是存放的位置,只要按照我放的位置来放即可,原因很简单,扫描的时候会扫描当前层级的文件和子文件,如果你放在某一个包中那么其它包中的文件就会扫描不到了,所以我放到了所有文件的外面这样就可以全部扫描到了
/**
* @author BNTang
*/
@SpringBootApplication
public class VideoApplication {
public static void main(String[] args) {
SpringApplication.run(VideoApplication.class, args);
}
}
修改 application.yml 配置文件,小小的改动一下,添加一些额外的配置信息如下,你也可以复制我下面的直接替换之前的全部内容即可,改为你自己的实际信息即可
代码语言:yaml复制# application-dev.yml
server:
port: 8001
logging:
pattern:
console: "%clr(%5p) %clr(-){faint} %clr(%-80.80logger{79}){cyan} %clr(:) %m%n"
spring:
application:
name: service-video
profiles:
active: dev
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/video_db?serverTimezone=GMT+8
username: root
password: root
hikari:
connection-test-query: SELECT 1
connection-timeout: 60000
idle-timeout: 500000
max-lifetime: 540000
maximum-pool-size: 12
minimum-idle: 10
pool-name: GuliHikariPool
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT 8
mybatis-plus:
configuration:
# SQL打印
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
配置 mybatis-plus
测试 Controller
代码语言:java复制/**
* <p>
* 创作者 前端控制器
* </p>
*
* @author BNTang
* @since 2021-03-27
*/
@RestController
@RequestMapping("/service_video/author")
public class AuthorController {
@RequestMapping("/getAuthorList")
public String getAuthorList() {
return "getAuthorList";
}
}
启动访问接口,效果如下图
修改 Controller 编写创建者接口
代码语言:java复制/**
* <p>
* 创作者 前端控制器
* </p>
*
* @author BNTang
* @since 2021-03-27
*/
@RestController
@RequestMapping("/service_video/author")
public class AuthorController {
/**
* 使用代码生成器生成的 service 当中已经有很多的基础服务,直接调用即可
*/
private final AuthorService authorService;
public AuthorController(AuthorService authorService) {
this.authorService = authorService;
}
@RequestMapping("/getAuthorList")
public List<Author> getAuthorList() {
return authorService.list(null);
}
}
在浏览器中测试接口如下图
逻辑删除
配置逻辑删除 Bean
代码语言:java复制/**
* @author BNTang
**/
@Configuration
public class AppConfig {
/**
* 逻辑删除配置Bean
*/
@Bean
public ISqlInjector iSqlInjector() {
return new LogicSqlInjector();
}
}
在实体类当中, 添加逻辑删除的注解
代码语言:java复制@TableLogic
在控制当中,编写删除的方法
代码语言:java复制/**
* <p>
* 根据Id删除创作者
* </p>
*/
@DeleteMapping("/deleteAuthor/{id}")
public boolean deleteAuthor(@PathVariable String id) {
return authorService.removeById(id);
}
测试,如下图
最后
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!