简述:
在智慧医疗系统中,用户管理模块需要提供高效且安全的用户数据操作服务,包括用户注册、登录、身份验证及权限管理。同时,还需要管理疾病信息、药物信息及病历信息,并通过智能问答系统提供精准的医疗建议。
实现内容如下:
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);
}
}