ajax——异步操作、整合注册功能

1. 整合整套注册流程

1.1. 处理持久层

复制此前项目的db.propertiesspring-dao.xml到当前项目中,修改必要的配置,例如持久层接口所在的包。

在创建src\main\resources下创建mappers文件夹,复制并得到新的UserMapper.xml文件。

检查User实体类是否与数据表保持一致:

public class User implements Serializable {

    private static final long serialVersionUID = 2905888894945816600L;

    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private String phone;
    private String email;
    private Integer isDelete;
    private Integer department;

    // ... ...

设计注册时需要执行的SQL语句:

INSERT INTO t_user (
    username, password, 
    age, phone,
    email, is_delete,
    department
) VALUES (
    #{username}, #{password},
    #{age}, #{phone}, 
    #{email}, #{isDelete}, 
    #{department}
)

以上字段列表和值列表,每行(横排)都只写2个,便于检查;
注意:最后一个字段和值的后面没有逗号,避免复制粘贴了多余的符号

为了保证“用户名唯一”,还应该添加“根据用户名查询数据”的功能,对应的SQL语句是:

SELECT 
    id, password
FROM 
    t_user 
WHERE 
    username=#{username}

单从注册来看,查询的字段列表是无所谓的,只关心有没有匹配的数据即可,基于“根据用户名查询数据”功能还可以应用于“登录”,所以,查询字段中可以有密码,用于登录时判断密码,还可以有id,用于成功登录后存入Session。

所以,实现注册功能,至少需要执行2种SQL语句,那么,接口中也应该存在2个抽象方法!则创建cn.tedu.ajax.mapper.UserMapper接口,并添加抽象方法:

Integer insert(User user);

User findByUsername(String username);

然后,修改UserMapper.xml根节点的namespace属性,并配置以上2个抽象方法的映射!

1.2. 处理业务层

业务层是持久层的调用者,且,大多数情况下,被控制器层调用。

Controller ---> Service ---> Mapper

在实际应用中,不允许控制器层直接调用持久层。

首先,创建cn.tedu.ajax.service.UserService类,声明private UserMapper userMapper;持久层对象,以便于调用并实现功能,但是,仅声明是没有值的,所以,添加@Autowired注解!如果属性需要被自动装配,当前类本身也应该在Spring管理范围之内,所以,当前类需要添加Service注解,并在组件扫描范围之内:

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    // ... ...

需要修改web.xml中加载的Spring配置文件,改为spring-*.xml

QAQ感谢你的支持=w=