项目接口的设计思想
以注册为例(使用maven来依赖管理,springboot项目)
总结
- 一般来说,若需要多次创建实例,可以使用工厂模式
- 密码存入数据库中需要加密,通常使用Md5Utils(Md5是不可逆的;为了不轻易使其破解,可以再加一个"盐String salt",进行混合加密(多加密几次),越复杂越好)进行加密
- 项目接口的设计思想
- 从Controller层写到Dao层(从上往下),一般先写需求/设计逻辑,写完一个类再写另一个类中的代码实现
- 设计路线:
① 需求分析
② 逻辑设计
③ 代码实现
④ 代码调试 - 一般来说,客户端传输的数据,Controller层进行接收的时候,使用自定义类封装数据(XxxParam类);springboot中controller层的注解为@RestController
- 通用的代码可以抽取出来,封装在工具类中
- 使用逆向工程可以生成对应数据库中对应表的pojo类、mapper类和mapper.xml文件(一般是一个个生成的,项目中不建议批量生成;由于项目是多人协同完成的)
数据库中的表一般都有id、creat_time、update_time这三个字段,可以将这三个字段封装在一个类中,该类需要实现序列化Serializable(便于json数据的转换),并且给与一个序列化Id;id字段需要注解(注明是主键,以及自动增长;这样,在生成动态sql语句的时候,自动增长就不用插入(id为Integer类型时)),生成的pojo类再去继承该类即可 - 由于插入语句的字段有可能发生改变,若写死sql语句,不便于后期的维护;因此,让mapper.java继承通用mapper,可以使用通用mapper中的插入方法dong
- 在resources包中定义一个mybatis_config.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 全局的设置信息-->
<settings>
<!-- 配置用生成的主键值 -->
<setting name="useGeneratedKeys" value="true"/>
<!-- 启用缓存 -->
<setting name="cacheEnabled" value="true"/>
<!-- 启用延迟加载功能 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 按需要延迟加载-->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 开启驼峰命名(方便自动映射) -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 打印查询语句,开发时开启,等项目上线是关闭-->
<setting name="logImpl" value="STDOUT_LOGGING" />
<!-- 开启sql语句字段为null值也封装回来 -->
<setting name="callSettersOnNulls" value="true"/>
</settings>
</configuration>
其中,开启驼峰命名;可以自动将表中的create_time转为类中的createTime,这样,就不需要在该成员变量上加上注解@Column(name="create_time")
当然了,封装表中数据的类上需要加入注解@Table(name="表名"),指定是哪张表
通用mapper官网 https://mapperhelper.github.io/docs/
数据校验
标准校验(非空、长度)
业务校验(根据业务需求而定)
账号用于判断用户数据唯一的标识,相当于数据库的ID字段
为了减少并发压力,一般sql语句尽可能一条搞定;而客户端需要什么数据,服务器再进行拆除去获取
不是用户操作的数据,而是服务器进行操作的;返回友好提示的时候不要返回提示信息