山东大学软件学院创新实训----后端开发8 UserService服务类实现

简述:

         在智慧医疗系统中,用户管理模块需要提供高效且安全的用户数据操作服务,包括用户注册、登录、身份验证及权限管理。同时,还需要管理疾病信息、药物信息及病历信息,并通过智能问答系统提供精准的医疗建议。

实现内容如下:

1、根据条件查询用户

query(User o) 方法根据条件查询用户对象列表。使用 QueryWrapper 将查询条件封装为 SQL 语句,简化了复杂的查询逻辑。

    /**
     * 根据条件查询 User 对象列表
     *
     * @param o 查询条件封装的 User 对象
     * @return 符合条件的 User 对象列表
     */
    @Override
    public List<User> query(User o) {
        QueryWrapper<User> wrapper = new QueryWrapper();
        if (Assert.notEmpty(o)) {
            // 将对象转换为 Map 形式
            Map<String, Object> bean2Map = BeanUtil.bean2Map(o);
            for (String key : bean2Map.keySet()) {
                if (Assert.isEmpty(bean2Map.get(key))) {
                    continue;// 跳过空值字段
                }
                // 使用下划线形式的字段名查询
                //VariableNameUtils.humpToLine(key) 是一个工具方法,用于将驼峰命名法的属性名转换为下划线分隔的数据库字段名。
                // 例如,如果 key 是 "userName",则转换后变为 "user_name"。
                wrapper.eq(VariableNameUtils.humpToLine(key), bean2Map.get(key));
            }
        }
        return userDao.selectList(wrapper);
    }

2、查询所有用户

all() 方法调用 query(null) 来查询所有用户对象。此方法提供了简单的接口来获取全部用户数据。

    /**
     * 查询所有的 User 对象
     *
     * @return 所有的 User 对象列表
     */
    @Override
    public List<User> all() {
        return query(null);
    }

3、保存或更新用户

save(User o) 方法根据用户对象的 ID 是否为空决定是插入新的用户还是更新已有用户。通过这种方式,我们可以统一处理保存和更新操作,简化了代码逻辑。

    /**
     * 保存或更新一个 User 对象
     *
     * @param o 要保存的 User 对象
     * @return 保存后的 User 对象
     */
    @Override
    public User save(User o) {
        // 如果 ID 为空,则插入新的对象
        if (Assert.isEmpty(o.getId())) {
            userDao.insert(o);
        } else {
            // 如果 ID 不为空,则更新已有对象
            userDao.updateById(o);
        }
        return userDao.selectById(o.getId());
    }

4、获取用户

get(Serializable id) 方法根据用户的主键 ID 获取用户对象。这是一个简单的封装,提供了基于 ID 获取用户数据的接口。

    /**
     * 根据 ID 获取一个 User 对象
     *
     * @param id 对象的主键 ID
     * @return 获取到的 User 对象
     */
    @Override
    public User get(Serializable id) {
        return userDao.selectById(id);
    }

5、删除用户

delete(Serializable id) 方法根据用户的主键 ID 删除用户对象。此方法返回删除操作影响的行数,通常为 1 表示成功删除,0 表示未找到。

    /**
     * 根据 ID 删除一个 User 对象
     *
     * @param id 要删除的对象的主键 ID
     * @return 删除操作影响的行数(一般为1表示成功删除,0表示未找到)
     */
    @Override
    public int delete(Serializable id) {
        return userDao.deleteById(id);
    }

完整实现代码:

package com.SmartMed_Connect.service;

import com.SmartMed_Connect.dao.UserDao;
import com.SmartMed_Connect.entity.User;
import com.SmartMed_Connect.utils.Assert;
import com.SmartMed_Connect.utils.BeanUtil;
import com.SmartMed_Connect.utils.VariableNameUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

@Service
public class UserService extends BaseService<User> {

    @Autowired
    protected UserDao userDao;

    /**
     * 根据条件查询 User 对象列表
     *
     * @param o 查询条件封装的 User 对象
     * @return 符合条件的 User 对象列表
     */
    @Override
    public List<User> query(User o) {
        QueryWrapper<User> wrapper = new QueryWrapper();
        if (Assert.notEmpty(o)) {
            // 将对象转换为 Map 形式
            Map<String, Object> bean2Map = BeanUtil.bean2Map(o);
            for (String key : bean2Map.keySet()) {
                if (Assert.isEmpty(bean2Map.get(key))) {
                    continue;// 跳过空值字段
                }
                // 使用下划线形式的字段名查询
                //VariableNameUtils.humpToLine(key) 是一个工具方法,用于将驼峰命名法的属性名转换为下划线分隔的数据库字段名。
                // 例如,如果 key 是 "userName",则转换后变为 "user_name"。
                wrapper.eq(VariableNameUtils.humpToLine(key), bean2Map.get(key));
            }
        }
        return userDao.selectList(wrapper);
    }

    /**
     * 查询所有的 User 对象
     *
     * @return 所有的 User 对象列表
     */
    @Override
    public List<User> all() {
        return query(null);
    }

    /**
     * 保存或更新一个 User 对象
     *
     * @param o 要保存的 User 对象
     * @return 保存后的 User 对象
     */
    @Override
    public User save(User o) {
        // 如果 ID 为空,则插入新的对象
        if (Assert.isEmpty(o.getId())) {
            userDao.insert(o);
        } else {
            // 如果 ID 不为空,则更新已有对象
            userDao.updateById(o);
        }
        return userDao.selectById(o.getId());
    }

    /**
     * 根据 ID 获取一个 User 对象
     *
     * @param id 对象的主键 ID
     * @return 获取到的 User 对象
     */
    @Override
    public User get(Serializable id) {
        return userDao.selectById(id);
    }

    /**
     * 根据 ID 删除一个 User 对象
     *
     * @param id 要删除的对象的主键 ID
     * @return 删除操作影响的行数(一般为1表示成功删除,0表示未找到)
     */
    @Override
    public int delete(Serializable id) {
        return userDao.deleteById(id);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值