项目一:注册

项目一,注册

导入项目,报错,因为缺少MyBatis的配置文件

spring.datasource.url=jdbc:mysql://localhost:3306/tedu_store?useUnicode=true&characeterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

mybatis.mapper-locations=classpath:mappers/*.xml

看测试类中的空方法是否正常执行

看是否获得数据库连接

此时需要创建数据库,否则会抛出异常

创建表

创建实体类

因为有些表的字段是每个表都会有的,所以可以创建实体类的基类储存这些字段

创建cn.tedu.store.entity.BaseEntity

这个类可以是抽象的,然后让相应的实体类继承这个基类,还要有对应的get/set方法,实现Serializable接口

创建cn.tedu.store.entity.User。。。实现基类。。。还有有对应的SET/GET/toString/equals和hashCode方法,实现Serializable接口

创建持久层

在启动类之前添加@MapperScan(“com.abc.Aotian.mapper”)以配置持久层接口所在的包

注册的SQL语句,应该先查询用户名是否存在,在判断是否新增

创建com.abc.Aotian.mapper.UserMapper接口

创建mapper.xml配置文件

创建com.abc.Aotian.UserMapperTests类测试持久层

创建业务层

规划异常

执行新增sql可能产生异常

com.abc.Aotian.service.ex.InsertException

用户名被占用可能产生异常

com.abc.Aotian.service.ex.UsernameDuplicateException

创建这两个异常类的基类

com.abc.Aotian.service.ex.ServiceException

他们都应该是

RuntimeException

的子孙类

创建业务层接口

com.abc.Aotian.service.IUserService
添加抽象方法
void reg(User user) throws UsernameDuplicateException, InsertException;

创建业务层实现类com.abc.Aotian.service.impl.UserServiceImpl

实现以上IUserService接口,添加@Service注解,并在类中声明@Autowired private UserMapper userMapper;持久层对象:

具体实现
创建com.abc.Aotian.service.UserServiceTests测试类,编写并执行单元测试:

创建控制器层

处理异常

创建响应结果的数据类型com.abc.Aotian.util.JsonResult:

public class JsonResult {

private Integer state;
private String message;
private T data;

public Integer getState() {
    return state;
}

public void setState(Integer state) {
    this.state = state;
}

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

public T getData() {
    return data;
}

public void setData(T data) {
    this.data = data;
}

}

在统一处理异常时,相关代码只能作用于当前控制器类,
为了使得整个项目都可以使用这个统一处理异常的机制,应该把相应代码添加在控制器类的基类
com.abc.Aotian.controller.BaseController中

public class BaseController {

@ExceptionHandler(ServiceException.class)
public JsonResult<Void> handleException(Throwable e) {
    JsonResult<Void> jr = new JsonResult<Void>();
    jr.setMessage(e.getMessage());

    if (e instanceof UsernameDuplicateException) {
        jr.setState(2);
    } else if (e instanceof InsertException) {
        jr.setState(3);
    }

    return jr;
}

}

创建com.abc.Aotian.controller.UserController控制器类,继承自BaseController,
添加@RestController和@RequestMapping(“users”)注解,并在类中添加@Autowired private IUserService userService;业务层对象,

@RequestMapping(“reg”)
public JsonResult reg(User user) {
// 执行注册
userService.reg(user);
// 返回成功
JsonResult jr = new JsonResult();
jr.setState(1);
return jr;
}

打开浏览器,输入http://localhost:8080/user/reg?username=Alex&password=1234进行测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值