1. 持久层
1.1 规划需要执行的sql语句
INSERT INTO student (sid, password, salt, name, gender, phone, email, avatar, is_delete, created_user, created_time, modified_user, modified_time) VALUE (#{sid}, #{password}, #{salt}, #{name}, #{gender}, #{phone}, #{email}, #{avatar}, #{isDelete}, #{createdUser}, #{createTime}, #{modifiedUser}, #{modifiedTime})
1.2 设计接口和抽象方法
/**
* 插入新的学生数据
* @param student 学生对象数据
* @return 插入手影响行数
*/
Integer insert(Student student);
1.3 sql映射
<insert id="insert">
INSERT INTO student
(sid, password, salt, name, gender, phone,
email, avatar, is_delete, created_user,
created_time, modified_user, modified_time)
VALUE
(#{sid}, #{password}, #{salt}, #{name}, #{gender},
#{phone}, #{email}, #{avatar}, #{isDelete},
#{createdUser}, #{createTime}, #{modifiedUser},
#{modifiedTime})
</insert>
1.4 单元功能测试
@Test
public void insert() {
Student student = new Student();
student.setSid("001");
student.setName("高汕大人");
student.setPassword("3285686");
Integer result = studentMapper.insert(student);
System.out.println(result);
}
2. 业务层
2.1 规划异常
- 学生注册学号已存在异常SidDuplicatedException
- 注册插入过程异常InsertException
2.2 设计接口和抽象方法
/**
* 学生注册接口
* @param student 注册对象信息
*/
void reg(Student student);
/**学生注册*/
@Override
public void reg(Student student) {
// 判断学生学号是否已被注册
Student result = studentMapper.findByStudentsid(student.getSid());
if (result != null) {
throw new SidDuplicatedException("学号已被注册!");
}
// 生成盐值 对旧密码进行md5加密
String Oldpassword = student.getPassword();
String salt = UUID.randomUUID().toString().toUpperCase();
String md5Password = getMD5Password(Oldpassword, salt);
student.setPassword(md5Password);
student.setSalt(salt);
student.setSid(student.getSid());
student.setIsDelete(0);
Date date = new Date();
student.setCreatedUser(student.getName());
student.setCreatedTime(date);
student.setModifiedUser(student.getModifiedUser());
student.setModifiedTime(date);
Integer rows = studentMapper.insert(student);
if (rows != 1) {
throw new InsertException("插入过程中异常");
}
}
2.3 单元测试
@Test
public void reg() {
Student student = new Student();
student.setSid("002");
student.setPassword("123456");
student.setName("高汕大人");
studentService.reg(student);
}
3. 控制层
3.1 异常处理
- 学生注册学号已存在异常SidDuplicatedException配置在统一异常处理中
else if (e instanceof SidDuplicatedException) {
result.setState(4003);
result.setMessage("学生账号已存在");
}
- 注册插入过程异常InsertException配置在统一异常处理中
else if (e instanceof InsertException) {
result.setState(4004);
result.setMessage("注册插入过程异常");
}
3.2 设计请求
/stu/reg
POST
Student student
JsonResult< Void >
3.3 处理请求
@RequestMapping("reg")
public JsonResult<Void> reg(Student student) {
studentService.reg(student);
return new JsonResult<>(OK);
}