项目流程及问题
数据库设计
数据库字符集问题
- 字符集:utf8mb4兼容utf8,Unicode编码区1~126是utf8区,126以下是utf8mb4兼容区。(一般选utf8:不浪费空间)
Unicode区表
数据库排序规则问题utf8_bin与utf8_general_ci(一般分这两种)
- bin是二进制,a与A会区别对待(例:SELECT * FROM table WHERE txt = ‘a’)
utf8_general_ci(case insensitive:大小写不敏感):有注册用户名和邮箱使用(邮箱大小写都是同一账户–现在才发现)
utf8_general_cs(case sensitive:大小写敏感):有用户名与邮箱用它有不良后果(msyql 5.6以上便不支持了-会报错-具体是从哪个版本我没试,反正5.6以上都不行)
数据库设计规则
58sql军规
- 数据库,表,字段用英文单词,且使用单数
- Id为主键,一般为bigint自增(分库分表集群用varchar)
- 表必备字段id,创建时间create_time,更新时间update_time(考虑逻辑删除deleted,乐观锁version)
- Deleted(最好不要is_deleted:有些框架pojo中isDeleted=getDeleted)
- 小数一定要用decimal
- 数据库字段中固定长度(id)时(char固定长度(不够填空),效率高,varchar可变,省存储空间)
- 两个字符一个中文varchar(20)(手机号必须用这个)
- Default默认:empty string空字符串/空/null值(插入null报错,原因选了不为null)
- 不设置外键,最好在业务逻辑层去处理
mysql字段-数据类型(数字/时间/字符)
tinyint(1byte) smallint(2byte:65536) mediumint(3byte) int bigint(8byte)
Decimal==numeric
Date日期 datetime日期+时间
Spring Boot+mybatisPlus的后台架构搭建
Spring Boot项目创建
Spring配置繁琐,太多xml,Annotation配置,让人眼花缭乱;
Spring Boot采用Java config方式对Spring配置;其二,不用配置tomcat,包括静态资源处理,视图解析器,注解扫描等
Spring boot小结
- spring Initializr(默认从官网拉取创建)(idea要下载Lombok插件)
- 添加依赖(可不选,用什么直接在依赖里添加依赖)
- 项目依赖(pom.xml springboot有的)spring-boot-starter(+test) junit-vintage-engine 三个依赖
Spring Boot 添加(mybatisPlus等)重要依赖
父pom里定义的一些版本
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.1</version>
</dependency>
Spring Boot的文件结构(创建包)
创建common包放自己写的类(下有config/exception/util三个包)
mabatis plus自动生成主要文件(MP)
在utils下创建mysqlGenerator类(自动生成)(要修改父包名等等)
public class mysqlGenerator {
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNotEmpty(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
public static void main(String[] args) {
AutoGenerator mpg = new AutoGenerator();
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setUrl("jdbc:mysql://127.0.0.1:3306/graduation?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
mpg.setDataSource(dsc);
PackageConfig pc = new PackageConfig();
pc.setParent("com.xxw.graduation");
pc.setModuleName(scanner("模块名"));
mpg.setPackageInfo(pc)