(1)诺依项目运行条件:
1. java环境 配置好
2. 先 启动redis 重重重
3. 在 启动后台 ruoyi-admin 运行项目 D:\java\WeiCar-Server\ruoyi-admin\src\main\java\com\ruoyi\RuoYiApplication.java 启动
4. 最后 启动vue(新项目启动vue 先要npm i) 切换到 ruoyi-ui目录下 linux:命令 npm run dev
5. vue关闭 ctrl+c
(2)spring boot 后端接口部分文件名称
SysPostController.java:岗位管理模块controller控制层文件;
ISysPostService.java:岗位管理模块service业务层接口定义文件;
SysPostServiceImpl.java:岗位管理模块service业务层接口实现文件;
SysPostMapper.java:岗位管理模块dao数据持久层接口定义文件;
SysPostMapper.xml:岗位管理模块dao数据持久层接口实现文件;
SysPost.java:岗位管理模块pojo实体类文件;
(3)数据层处理的一些方法
这个BaseMapper接口定义了一系列与数据库操作相关的方法,主要用于CRUD(创建、读取、更新、删除)操作。下面是对每个方法的解释:
insert(T entity): 插入一个实体到数据库中。
deleteById(Serializable id): 根据ID删除一个实体。
deleteById(T entity): 根据实体本身(可能是某些特定的字段)删除一个实体。
deleteByMap(Map<String, Object> columnMap): 根据传入的列名和值映射删除匹配的实体
delete(Wrapper<T> queryWrapper): 使用查询包装器删除匹配的实体。
deleteBatchIds(Collection<?> idList): 批量删除给定ID列表中的实体。
updateById(T entity): 根据ID更新一个实体的信息。
update(T entity, Wrapper<T> updateWrapper): 使用实体和更新包装器更新匹配的实体。
selectById(Serializable id): 根据ID查询一个实体。
selectBatchIds(Collection<? extends Serializable> idList): 批量查询给定ID列表中的实体。
selectByMap(Map<String, Object> columnMap): 根据传入的列名和值映射查询匹配的实体列表。
以下是默认方法,即这些方法在接口中直接提供了实现,不需要子类去实现:
selectOne(Wrapper<T> queryWrapper): 查询单个实体。如果查询结果不是恰好一个,则抛出异常。
exists(Wrapper<T> queryWrapper): 检查是否存在匹配的实体。
selectCount(Wrapper<T> queryWrapper): 查询匹配的实体数量。
selectList(Wrapper<T> queryWrapper): 查询匹配的实体列表。
selectMaps(Wrapper<T> queryWrapper): 查询匹配的实体,并将结果转换为Map列表。
selectObjs(Wrapper<T> queryWrapper): 查询匹配的实体,并将结果转换为Object列表。
selectPage(P page, Wrapper<T> queryWrapper): 分页查询匹配的实体,其中P是IPage<T>或其子类的类型参数。
selectMapsPage(P page, Wrapper<T> queryWrapper): 分页查询匹配的实体,并将结果转换为Map列表。
这里的Wrapper<T>可能是一个用于构建查询条件的工具类,它允许用户以更灵活的方式构建查询条件。IPage<T>可能是一个分页相关的接口或类, 用于处理分页查询的结果。
(4)实体类 ---验证不为空处理
@NotNull(message = "验证所有类型 ")
@NotBlank(message = "验证字符串")
@Min(value = 1, message = "部门编号必须大于0")
(5) 添加一个公共类
D:\java\WeiCar-Server\ruoyi-common\src\main\java\com\ruoyi\common\config\RestTemplateConfig.java
(6)使用配置类 获取参数
@Value("${php.requestUrl}")
private String requestUrl;
(7).数据交互
LambdaQueryChainWrapper 提供了多种查询方式以满足不同的查询需求。你可以根据需要选择适合的查询方法:
WeiCarInformation carInformation = new LambdaQueryChainWrapper<>(weiCarInformationMapper)
.eq(WeiCarInformation::getFlowId, carPriceEvaluationVo.getFlowId())
.eq(WeiCarInformation::getDel, DelFlagEnum.UN_DEL.getStatus())
.eq(WeiCarInformation::getStatus, DataStatusEnum.ENABLE.getStatus())
.one();
list(): 获取列表
one(): 获取单条记录
oneOpt(): 获取单条记录(Optional包装)
listObjs(): 获取单个字段的列表
count(): 获取记录数
exists(): 判断记录是否存在-->>返回布尔值true,false
page(): 分页查询
listMaps(): 获取记录映射为 Map
listObjs(Function<R, Object> mapper): 使用自定义映射函数获取单个字段的列表
.eq()(等于)
.gt()(大于)、.lt()(小于)、.ge()(大于等于)和.le()(小于等于)in(参数,第一个值,第二个值)(或者满足2个条件)
(8)DTO使用方式
创建dto xml调用
(9)数据库类型 字典名称的调用
weiGuaranteeList-----查询得到的参数
WeiGuarantee-----实体类
"wei_work_situation",-----字典的类型
String.valueOf(contact.getPost()),-----数据库的字段
contact::setRelationName------需要赋值的字段
if (!weiGuaranteeList.isEmpty()) {
for (WeiGuarantee contact : weiGuaranteeList) {
DictConverterUtils.mapDictValueToLabel(
"wei_work_situation",
String.valueOf(contact.getPost()),
contact::setPostName
);
}
}
(10).类型转换
// String newPlanIdAsString = newPlanId.toString();//转字符串
// int newPlanIdAsInt = Integer.parseInt(newPlanIdAsString);//转int
(11).查询列表拼接
public AjaxResult userRiskList(Long flowId) {
//查询主借人
List<WeiCustomer> customersList = new LambdaQueryChainWrapper<WeiCustomer>(weiCustomerMapper)
.eq(WeiCustomer::getFlowId, flowId)
.eq(WeiCustomer::getDel, DelFlagEnum.UN_DEL.getStatus())
.list();
//查询担保人
List<WeiGuarantee> guaranteeList = new LambdaQueryChainWrapper<WeiGuarantee>(weiGuaranteeMapper)
.eq(WeiGuarantee::getFlowId, flowId)
.eq(WeiGuarantee::getDel, DelFlagEnum.UN_DEL.getStatus())
.list();
List<UserRiskListDto> contactInfoList = Stream.concat(
customersList.stream().map(customer -> new UserRiskListDto(
customer.getName(), customer.getIdNo(), customer.getTel(),"1")),
guaranteeList.stream().map(guarantee -> new UserRiskListDto(
guarantee.getName(), guarantee.getIdNo(), guarantee.getTel(),"2"))
).collect(Collectors.toList());
return AjaxResult.success("成功",contactInfoList);
}