南京招投标中心官网,东莞关键词优化实力乐云seo,花生壳做的网站,做亚马逊跨境电商赚钱吗项目实训博客#xff1a;MongoDB 驱动的对话管理模块开发
作为项目中对话管理模块的开发者#xff0c;我聚焦于 用户登录注册、对话历史保存、收藏对话 核心功能#xff0c;基于 MongoRepository 实现与 MongoDB 的高效交互。以下是开发实践的深度总结#xff1a;
一、功…项目实训博客MongoDB 驱动的对话管理模块开发
作为项目中对话管理模块的开发者我聚焦于 用户登录注册、对话历史保存、收藏对话 核心功能基于 MongoRepository 实现与 MongoDB 的高效交互。以下是开发实践的深度总结
一、功能定位与技术栈
1. 核心职责
用户基础服务实现登录、注册功能为系统提供身份验证基础对话数据管理保存用户交互历史、支持收藏对话持久化技术选型 数据库MongoDB灵活 schema 适配对话场景持久层MongoRepository简化 CRUD 操作认证JWTToken 生成与解析
二.准备工作
一、添加 Maven 依赖
在 pom.xml 中添加 Spring Data MongoDB 依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb/artifactId
/dependency二、配置 MongoDB 连接信息
在 application.properties 或 application.yml 中配置 MongoDB 连接参数
spring.data.mongodb.urimongodb://localhost:27017/test三. MongoDB 交互设计
用户表users 集合
Document(collection users)
public class User {private String useriId; private String username; // 账号private String password; // 密码
}对话历史表dialog_db 集合
Document(collection dialog_db)// 集合名
public class Dialog {private String username;private Integer role;private String content;private LocalDateTime updateTime;
}收藏对话表dialog_collection 集合
Document(collection dialog_collection)
//收藏的对话
public class DialogCollection {private String title; //文件标题private String username; //用户名private Integer role; //角色编号private String content; //内容private LocalDateTime updateTime; //更新时间
}创建 Repository 接口
继承 MongoRepositoryT, ID 接口泛型参数分别为实体类和主键类型
import org.springframework.data.mongodb.repository.MongoRepository;public interface CollectionRepository extends MongoRepositoryDialogCollection,String {//删除一条收藏void deleteByTitleAndUsername(String title,String username);//根据文件名或用户名查询收藏的对话ListDialogCollection findByTitleOrUsername(String title, String username);//根据文件名或用户名删除所有收藏对话void deleteAllByTitleOrUsername(String title, String username);
}public interface DialogHistoryRepository extends MongoRepositoryDialog, String {//根据用户名查询ListDialog findAllByUsername(String username);// 可以在此添加自定义查询方法不过基本的 CRUD 方法已由父接口提供// 根据用户名查询最新的几条记录ListDialog findTopNumberByUsernameOrderByUpdateTimeDesc(String username, Integer number);// 根据用户名删除所有记录void deleteAllByUsername(String username);
}public interface LoginRepository extends MongoRepositoryUser, String {/*** 根据用户名和密码查询用户*/User findByUsername(String username);
}public interface RegisterRepository extends MongoRepositoryUser, String {// 根据用户名查询用户User findUserByUsername(String username);
}四. 使用示例
根据登录注册 历史对话 收藏对话 我设计了四个Controller分别控制一块功能并设计了Service接口和实现类
Controller中接受前端的参数 交由Service实现类处理 其中 每个ServiceImpl注入了对应的Repository对象 用于操作数据
4.1 登录功能 PostMapping(/login)
public Result login(RequestBody LoginRequest loginRequest) {String username loginRequest.getUsername();String password loginRequest.getPassword();User user loginService.login(username, password);if(user null){return Result.error(登录失败);}//登录成功就发放jwt令牌HashMapString, Object claims new HashMap();claims.put(userId, user.getUserId());claims.put(username, username);String jwtToken JwtUtils.generateJwt(claims);System.out.println(本次登录产生的jwt令牌:{} jwtToken);UserVO userVO UserVO.builder().userId(user.getUserId()).username(username).token(jwtToken).build();return Result.success(userVO);其中loginService.login方法用于登录校验
Override
public User login(String username, String password) {User user loginRepository.findByUsername(username);//判断是否存在if(user null){//log.info(用户不存在);throw new ServiceException(CODE_500,用户不存在);}//判断密码是否正确if(!user.getPassword().equals(password)){//log.info(密码错误);throw new ServiceException(CODE_500,密码错误);}return user;
}根据用户名密码去user集合查询 如果没有就返回“账号不存在”否则返回User对象
4.2 注册功能
注册功能的逻辑是先校验是否符合规则 如果符合就创建User对象 并保存至集合中
Override
public User register(RegisterDTO registerDTO) {//正则表达式校验//用户名 数字 字母 3-10位//密码 数字 字母 6-10位String usernamePattern ^[a-zA-Z0-9]{3,10}$;String passwordPattern ^[a-zA-Z0-9]{6,10}$;String username registerDTO.getUsername();String password registerDTO.getPassword();//判断用户名是否已经存在User user registerRepository.findUserByUsername(username);if(user ! null){throw new ServiceException(500,用户名已存在);}if(!username.matches(usernamePattern)){throw new ServiceException(500,用户名格式错误);}else if(!password.matches(passwordPattern)){throw new ServiceException(500,密码格式错误);}else {user new User();BeanUtils.copyProperties(registerDTO,user);long userId autoIncrementUserIdUtils.getNextId(userSeq);user.setUserId((int) userId);//保存到数据库中registerRepository.save(user);}return user;
}4.3 历史对话 和 收藏对话 的相关功能
思路都是一样的通过DialogRepository进行增删改查
五. 待优化点
问题类型具体问题优化方案性能优化对话历史查询效率较低增加username createTime复合索引安全加固密码传输存在明文风险全面升级加密策略强化传输层防护功能完善收藏记录存在重复问题添加username title唯一约束索引
展望与成长
后续将推进优化方案落地验证索引添加、加密策略升级等对系统的实际增益。同时持续挖掘 MongoDB 在法律对话场景的潜力探索如对话内容分词检索、收藏标签化管理等功能扩展借助数据库特性深化业务价值。
通过本次开发团队熟练掌握 MongoRepository 简化数据库操作的优势理解非关系型数据库在灵活业务场景的适配性也清晰认知数据模块从功能实现到体验打磨的完整链路。未来将以更成熟的技术实践为法律科技类系统打造更高效、更安全、更贴合用户需求的数据交互体系。 文章转载自: http://www.morning.mfqmk.cn.gov.cn.mfqmk.cn http://www.morning.sqgsx.cn.gov.cn.sqgsx.cn http://www.morning.addai.cn.gov.cn.addai.cn http://www.morning.hpnhl.cn.gov.cn.hpnhl.cn http://www.morning.dmcxh.cn.gov.cn.dmcxh.cn http://www.morning.ntqjh.cn.gov.cn.ntqjh.cn http://www.morning.rsbqq.cn.gov.cn.rsbqq.cn http://www.morning.prznc.cn.gov.cn.prznc.cn http://www.morning.znnsk.cn.gov.cn.znnsk.cn http://www.morning.lwnwl.cn.gov.cn.lwnwl.cn http://www.morning.cmhkt.cn.gov.cn.cmhkt.cn http://www.morning.mjgxl.cn.gov.cn.mjgxl.cn http://www.morning.mcndn.cn.gov.cn.mcndn.cn http://www.morning.trtdg.cn.gov.cn.trtdg.cn http://www.morning.ctfh.cn.gov.cn.ctfh.cn http://www.morning.pqjlp.cn.gov.cn.pqjlp.cn http://www.morning.wiitw.com.gov.cn.wiitw.com http://www.morning.nnhfz.cn.gov.cn.nnhfz.cn http://www.morning.rhjsx.cn.gov.cn.rhjsx.cn http://www.morning.xckrj.cn.gov.cn.xckrj.cn http://www.morning.xhlht.cn.gov.cn.xhlht.cn http://www.morning.ghfmd.cn.gov.cn.ghfmd.cn http://www.morning.jkftn.cn.gov.cn.jkftn.cn http://www.morning.rzpkt.cn.gov.cn.rzpkt.cn http://www.morning.rnpt.cn.gov.cn.rnpt.cn http://www.morning.fyxtn.cn.gov.cn.fyxtn.cn http://www.morning.hmqwn.cn.gov.cn.hmqwn.cn http://www.morning.nhpgm.cn.gov.cn.nhpgm.cn http://www.morning.nrchx.cn.gov.cn.nrchx.cn http://www.morning.lmxzw.cn.gov.cn.lmxzw.cn http://www.morning.rwpfb.cn.gov.cn.rwpfb.cn http://www.morning.hxbjt.cn.gov.cn.hxbjt.cn http://www.morning.hkchp.cn.gov.cn.hkchp.cn http://www.morning.brjq.cn.gov.cn.brjq.cn http://www.morning.whpsl.cn.gov.cn.whpsl.cn http://www.morning.qzxb.cn.gov.cn.qzxb.cn http://www.morning.hmgqy.cn.gov.cn.hmgqy.cn http://www.morning.lktjj.cn.gov.cn.lktjj.cn http://www.morning.qngcq.cn.gov.cn.qngcq.cn http://www.morning.trkhx.cn.gov.cn.trkhx.cn http://www.morning.jfbrt.cn.gov.cn.jfbrt.cn http://www.morning.jqbpn.cn.gov.cn.jqbpn.cn http://www.morning.cfnsn.cn.gov.cn.cfnsn.cn http://www.morning.nlqgb.cn.gov.cn.nlqgb.cn http://www.morning.hdwjb.cn.gov.cn.hdwjb.cn http://www.morning.skpdg.cn.gov.cn.skpdg.cn http://www.morning.rxhs.cn.gov.cn.rxhs.cn http://www.morning.pzlcd.cn.gov.cn.pzlcd.cn http://www.morning.mxbks.cn.gov.cn.mxbks.cn http://www.morning.xwlmg.cn.gov.cn.xwlmg.cn http://www.morning.wflsk.cn.gov.cn.wflsk.cn http://www.morning.ltkms.cn.gov.cn.ltkms.cn http://www.morning.zypnt.cn.gov.cn.zypnt.cn http://www.morning.kwwkm.cn.gov.cn.kwwkm.cn http://www.morning.lqgfm.cn.gov.cn.lqgfm.cn http://www.morning.qwzpd.cn.gov.cn.qwzpd.cn http://www.morning.cnhgc.cn.gov.cn.cnhgc.cn http://www.morning.fmjzl.cn.gov.cn.fmjzl.cn http://www.morning.nkjkh.cn.gov.cn.nkjkh.cn http://www.morning.cwyfs.cn.gov.cn.cwyfs.cn http://www.morning.hwsgk.cn.gov.cn.hwsgk.cn http://www.morning.ntqlz.cn.gov.cn.ntqlz.cn http://www.morning.dbphz.cn.gov.cn.dbphz.cn http://www.morning.qyrnp.cn.gov.cn.qyrnp.cn http://www.morning.nfzzf.cn.gov.cn.nfzzf.cn http://www.morning.cnxpm.cn.gov.cn.cnxpm.cn http://www.morning.xflwq.cn.gov.cn.xflwq.cn http://www.morning.pgcmz.cn.gov.cn.pgcmz.cn http://www.morning.yhglt.cn.gov.cn.yhglt.cn http://www.morning.jkpnm.cn.gov.cn.jkpnm.cn http://www.morning.qhjkz.cn.gov.cn.qhjkz.cn http://www.morning.ktfbl.cn.gov.cn.ktfbl.cn http://www.morning.ktcfl.cn.gov.cn.ktcfl.cn http://www.morning.jjrsk.cn.gov.cn.jjrsk.cn http://www.morning.mngh.cn.gov.cn.mngh.cn http://www.morning.bpttm.cn.gov.cn.bpttm.cn http://www.morning.pzlcd.cn.gov.cn.pzlcd.cn http://www.morning.ktlxk.cn.gov.cn.ktlxk.cn http://www.morning.mprtj.cn.gov.cn.mprtj.cn http://www.morning.zrgdd.cn.gov.cn.zrgdd.cn