1. 整合整套注册流程
1.1. 处理持久层
复制此前项目的db.properties和spring-dao.xml到当前项目中,修改必要的配置,例如持久层接口所在的包。
在创建srcmainresources下创建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;
// ... ...