1. 微信支付项目开发笔记一:项目搭建和测试
文章目录
1.1. 项目开发流程
- 市场调研----》 产品调研----》 需求评审(产品人员、设计人员,前端,后端,测试,运营),目标:评审产品在各个环节的困难,以及保证多久能够实现。
- 如图
1.2. 项目开发架构图
1.3. 技术选择
- 后端:
Eclipse/IDE+SpringBoot2.x+Mybatis+缓存+HttpClient+Mysql
- 前端
HTML5+bootstrap+jquery
- 测试要求
首页和视频详情页,qbs单机 qbs要求500+
1.4. 后台数据库设计
- 数据库设计
ER图:
实体对象:矩形
属性:椭圆
关系:菱形
- 字段冗余的好处
比如:评论表的评论用户的昵称和评论用户的id,字段都要有,因为利于分库分表。还有微信登录,利用了你的微信头像,但是有一天你微信头像更新了,但是这个表里面的没有及时的更新的处理方案:
1、忽略
2、写一个定时任务,每天半夜,用户很少时同步一下。
3、将用户表作为一个全局表,一旦更改,写一个消息队列,就通知其他表的字段进行修改。
- 常见注意事项
连接mysql客户端:苹果系统:sequel pro win系统:navicat
没有一层不变的架构,没有通用的设计方案。
一定要与业务结合。
1.5. Eclipse快速搭建SpringBoot框架
- 站点地址:http://start.spring.io/
- 需要的依赖
spring-boot-starter-web
spring-boot-starter-data-redis
mybatis-spring-boot-starter
mysql-connector-java
spring-boot-starter-test
- 如果一开始就导入mysql和mybatis依赖,而又没有配置数据库连接信息的话会报错。
- Idea用同样的方法进行搭建
1.6. Eclipse/Idea部署热部署
- Eclipse添加热部署,只需要添加一个依赖就ok了
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
- idea会自动将热部署关闭。
- idea除此之外还要
ctrl+shift+alt+/ 快捷键,选择Registry
compiler.automake.allow.when.app.running 勾选 然后重启项目。
1.7. 后端项目分包
- 基本目录结构
controller
service
impl
mapper
utils
domain
config
interceoter
dto或者model
- application.properties配置文件 server.port=8082配置端口
- 入口类也就是main类应该放在根目录下面。
1.8. 开源工具类的优缺点
- 分页插件PageHelper
优点:开发简单,使用aop方式进行分页,只需要引入相关依赖,然后PageHelper.startPage(page,size)开启分页
缺点:对于分库,分表等情况使用有问题,深度分页逻辑判断会复杂。
- mysql分页案例
- 推荐书籍
1.9. mysql逆向工程,IDEA自动生成java实体类
- IDEA连接数据库
View->Tool windows->Database打开数据库工具窗口,
连接数据库,右键点击生成pojo类,生成pojo类之前要修改包名。和一些时间类所引用的包。
- 数据库实体类常用类型java.util.Date
1.10. 接口配置文件自动映射到属性和实体类配置
- 属性名字规范
大模块.子模块.属性名
-
在配置文件添加@Configuration,和@PropertySource(value = “classpath:application.properties”)
-
从properties中获取值
@Value("${wxpay.appid}")
private String appId;
@Value("${wxpay.appsecret}")
private String appsecret;
1.11. 引入mybatis依赖,第三方数据源,mysql连接驱动
<!--mybatis依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<!--mysql连接驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--引入第三方数据源-->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
1.12. mysql配置文件
springBoot会将这些注入到sqlSessionFactory。
#========================mysql相关====================
#可以自动识别
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/xdclass?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
#如果不使用默认的数据源(com.zaxxer.hikari.HikariDataSourc)
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
1.13. Mybatis配置注解
- 在启动类里面添加注解 @MapperScan()
@SpringBootApplication
@MapperScan("net.xdclass.xdvideo.mapper")
public class XdvideoApplication {
public static void main(String[] args) {
SpringApplication.run(XdvideoApplication.class, args);
}
}