You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
BookStore/src/com/yj/service/impl/UserServiceImpl.java

139 lines
4.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.yj.service.impl;
import com.yj.bean.Book;
import com.yj.bean.Page;
import com.yj.bean.User;
import com.yj.dao.UserDao;
import com.yj.dao.impl.UserDaoImpl;
import com.yj.service.UserService;
import java.util.List;
/**
* @author yj
* @create 2020-08-21 15:34
*/
public class UserServiceImpl implements UserService {
// 用户数据访问对象使用UserDaoImpl实现
private UserDao userDao = new UserDaoImpl();
/**
* 注册用户
* @param user 要注册的用户对象
*/
@Override
public void registUser(User user) {
userDao.saveUser(user); // 保存用户信息
}
/**
* 用户登录
* @param user 包含用户名和密码的用户对象
* @return 如果登录成功返回用户对象否则返回null
*/
@Override
public User login(User user) {
return userDao.querybyUsernameAndPassword(user.getUsername(), user.getPassword()); // 验证用户名和密码
}
/**
* 检查用户名是否存在
* @param username 要检查的用户名
* @return 如果不存在则返回false反之则返回true
*/
@Override
public boolean existsUsername(String username) {
if (userDao.querybyUsername(username) == null) {
return false; // 用户名不存在
} else {
return true; // 用户名存在
}
}
/**
* 添加新用户
* @param user 要添加的用户对象
*/
@Override
public void addUser(User user) {
userDao.addUser(user); // 调用数据访问层添加用户
}
/**
* 根据用户ID删除用户
* @param i 用户ID
*/
@Override
public void deleteUserById(int i) {
userDao.deleteUserById(i); // 调用数据访问层删除用户
}
/**
* 更新用户信息
* @param user 要更新的用户对象
*/
@Override
public void updateUser(User user) {
userDao.updateUser(user); // 调用数据访问层更新用户
}
/**
* 根据用户ID查询用户信息
* @param id 用户ID
* @return 返回对应的用户对象如果用户不存在则返回null
*/
@Override
public User queryUserById(Integer id) {
return userDao.queryUserById(id); // 调用数据访问层查询用户
}
/**
* 查询所有用户的信息
* @return 返回用户列表
*/
@Override
public List<User> queryUsers() {
return userDao.queryUsers(); // 调用数据访问层获取所有用户
}
@Override
public Page<User> page(int pageNo, int pageSize) {
Page<User> page = new Page<User>(); // 创建一个新的分页对象
// 设置每页记录数
page.setPageSize(pageSize); // 将每页的记录数设置为方法传入的pageSize
// 设置总记录数
Integer pageTotalCount = userDao.queryForPageTotalCount(); // 从数据库中获取总记录数
page.setPageTotalCount(pageTotalCount); // 将总记录数设置到分页对象中
// 计算总页码
Integer pageTotal = pageTotalCount / pageSize; // 根据总记录数和每页大小计算总页数
if (pageTotalCount % pageSize > 0) { // 如果有剩余记录,则总页数加一
pageTotal += 1;
}
// 设置当前页
if (pageNo > pageTotal) { // 如果请求的当前页码大于总页码,则设置为最后一页
pageNo = pageTotal;
}
if (pageNo < 1) { // 如果请求的当前页码小于1则设置为第一页
pageNo = 1;
}
page.setPageNo(pageNo); // 将最终确定的当前页码设置到分页对象中
// 设置总页码
page.setPageTotal(pageTotal); // 将计算出来的总页码设置到分页对象中
// 计算当前页的起始记录索引
int begin = (page.getPageNo() - 1) * pageSize; // 计算当前页的开始位置
// 查询当前页的数据项
List<User> items = userDao.queryForPageItems(begin, pageSize); // 从数据库中查询当前页的数据
page.setItems(items); // 将查询到的数据设置到分页对象中
return page; // 返回包含分页信息的分页对象
}
}