2k_Day3:搞清楚最基本简单的crud
写一个简简单单的产品基础功能
产品基础嘛,就很单一的product表增删改查批量,字段也是很简单。
ID、产品code、标题、简介、关键词、缩略图、更新者、更新日期、排序ID、是否启动
然后,额外字段也能选择性加一加
产品类型、所属分类、详情内容、库存量、点击量、是否推荐、是否最新、是否置顶、来源、
最基础最简单,因为没包括验签、过滤、网关、均衡、空值判断、日志、异常处理。所以是最简单的。
搞清楚每层的工作:
1.简单的搞清几步
公共:
1、先引用springweb、openfeign
2、服务的包:com.shop-admin.xxx(products/order/ware/coupon)
3、统一用springBoot 2.3.1RELEASE(只要求统一)
4、复制一个pom.xml到主目录,加上modules,一起启动,方便管理。
5、每个application、application.yml、application.properties的最初始配置(sqldatasoruce、mybatiesPlus)
pom.xml
<modelVersion>4.0.0</modelVersion>
<groupId>com.shopAdmin</groupId>
<artifactId>shopAdmin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>shopAdmin</name>
<description>聚合服务</description>
<packaging>pom</packaging>
<modules>
<module>common</module>
<module>doneproduct</module>
<module>products</module>
</modules>
java/Application.java
package com.shopadmin.products;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ProductsApplication {
public static void main(String[] args) {
SpringApplication.run(ProductsApplication.class, args);
}
}
注解加@SpringBootApplication,标记是程序启动,之前有了解到注解是个组合注解。
resources/application.properties和application.yml
# 应用服务 WEB 访问端口
server.port=8080
spring:
datasource:
url: jdbc:sqlserver://localhost:54416;DatabaseName=shop;encrypt=false
username: abc
password: 123
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml
global-config:
db-config:
id-type: auto
server:
port: 10000
application.yml配置数据库、mybatisPlus、服务器的端口。
2.业务的分层
contorller层:
productsController.java
@RestController
@RequestMapping("produts")
public class ProdutsController {
@Autowired
private produtsService produtsService;
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,@PathVariable("Id") int oid){
PageUtils page = produtsService.queryPage(params);
return R.ok().put("page", page);
}
}
接口控制器注解:@RestController、@RequestMapping("路径")
自动匹配bean注解: @Autowired
接口入参注解:@RequestParam、@PathVariable
service层:(接口)
public interface produtsService extends IService<DoneprodutsEntity>
{
PageUtils queryPage(Map<String, Object> params);
}
service/impl:(实现类)
@Service("produtsService")
public class produtsServiceImpl extends ServiceImpl<produtsDao, produtsEntity>
implements produtsService
{
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<produtsEntity> page = this.page(
new Query<produtsEntity>().getPage(params),
new QueryWrapper<produtsEntity>()
);
return new PageUtils(page);
}
}
实现Service注解:@Service
扩展Dao、Entity类,继承service接口
重写注解:@Override
3.公共类
R.java(返回集的统一规范)
SQLFilter.java(防SQL注入、非法字符、用词)
HTMLFilter.java(过滤HTML危险访问)
Query.java(分页工具类)