wordpress 问答模板/搜狗seo优化
文章目录
- 🌞 Sun Frame:SpringBoot 的轻量级开发框架(个人开源项目推荐)
- 🌟 亮点功能
- 📦 spring cloud模块概览
- 常用工具
- 🔗 更多信息
- 1.easycode生成代码
- 1.配置
- 2.AuthPermissionDao.java剪切到mapper
- 3.AuthPermission.java使用lombok优化
- 4.AuthPermissionDao.java 删除Pageable
- 5.AuthPermissionDao.xml 全局替换为空
- 6.AuthPermissionService.java 删除分页查询接口
- 7.AuthPermissionServiceImpl.java 删除分页查询实现类
- 2.编写DTO和BO
- 1.sun-club-auth-application-controller
- 1.AuthPermissionDTO.java
- 2.AuthPermissionDTOConverter.java
- 2.sun-club-auth-domain
- 1.AuthPermissionBO.java
- 2.AuthPermissionBOConverter.java
- 3.新增权限
- 1.PermissionController.java
- 2.sun-club-auth-domain
- 1.AuthPermissionDomainService.java
- 2.AuthPermissionDomainServiceImpl.java
- 3.sun-club-auth-infra
- 1.AuthPermissionService.java
- 2.AuthPermissionServiceImpl.java
- 4.测试
- 1.接口设计
- 2.测试
- 4.更新权限
- 1.PermissionController.java
- 2.sun-club-auth-domain
- 1.AuthPermissionDomainService.java
- 2.AuthPermissionDomainServiceImpl.java
- 3.sun-club-auth-infra
- 1.AuthPermissionService.java
- 2.AuthPermissionServiceImpl.java
- 3.AuthPermissionDao.xml 注意show是关键字
- 4.测试
- 1.接口设计
- 2.测试
- 5.删除权限
- 1.PermissionController.java
- 2.AuthPermissionDomainService.java
- 3.AuthPermissionDomainServiceImpl.java
- 4.测试
- 1.接口设计
- 2.测试
- 6.权限与角色关联
- 1.easycode生成代码
- 1.配置
- 2.dao层AuthRolePermissionDao.java的移动到mapper层
- 3.AuthRolePermission.java 使用lombok优化
- 4.AuthRolePermissionDao.java 删除Pageable
- 5.AuthRolePermissionDao.xml 全局替换掉, INTEGER之类的
- 6.AuthRolePermissionService.java 删除分页查询接口
- 7.AuthRolePermissionServiceImpl.java 删除分页查询实现类
- 2.编写DTO和BO
- 1.sun-club-auth-application-controller
- 1.AuthRolePermissionDTO.java
- 2.AuthRolePermissionDTOConverter.java
- 2.sun-club-auth-domain
- 1.AuthRolePermissionBO.java
- 2.AuthRolePermissionBOConverter.java
- 3.sun-club-auth-application-controller
- 1.AuthRolePermissionDTO.java 新增permissionIdList字段
- 2.RolePermissionController.java
- 4.sun-club-auth-domain
- 1.AuthRolePermissionDomainService.java
- 2.AuthRolePermissionDomainServiceImpl.java
- 3.AuthRolePermissionBO.java 保持跟DTO一致
- 5.sun-club-auth-infra
- 1.AuthRolePermissionService.java
- 2.AuthRolePermissionServiceImpl.java
- 6.测试
- 1.接口设计
- 2.测试
🌞 Sun Frame:SpringBoot 的轻量级开发框架(个人开源项目推荐)
轻松高效的现代化开发体验
Sun Frame 是我个人开源的一款基于 SpringBoot 的轻量级框架,专为中小型企业设计。它提供了一种快速、简单且易于扩展的开发方式。
您的支持是我们持续改进的动力。
🌟 亮点功能
- 组件化开发:灵活选择,简化流程。
- 高性能:通过异步日志和 Redis 缓存提升性能。
- 易扩展:支持多种数据库和消息队列。
📦 spring cloud模块概览
- Nacos 服务:高效的服务注册与发现。
- Feign 远程调用:简化服务间通信。
- 强大网关:路由与限流。
常用工具
- 日志管理:异步处理与链路追踪。
- Redis 集成:支持分布式锁与缓存。
- Swagger 文档:便捷的 API 入口。
- 测试支持:SpringBoot-Test 集成。
- EasyCode:自定义EasyCode模板引擎,一键生成CRUD。
🔗 更多信息
- 开源地址:Gitee Sun Frame
- 详细文档:语雀文档
1.easycode生成代码
1.配置
2.AuthPermissionDao.java剪切到mapper
3.AuthPermission.java使用lombok优化
4.AuthPermissionDao.java 删除Pageable
5.AuthPermissionDao.xml 全局替换为空
, VARCHAR
, INTEGER
, TIMESTAMP
6.AuthPermissionService.java 删除分页查询接口
7.AuthPermissionServiceImpl.java 删除分页查询实现类
2.编写DTO和BO
1.sun-club-auth-application-controller
1.AuthPermissionDTO.java
package com.sunxiansheng.auth.application.dto;import lombok.Data;import java.io.Serializable;/*** (AuthPermission)dto** @author makejava* @since 2024-06-06 17:16:58*/
@Data
public class AuthPermissionDTO implements Serializable {private Long id;/*** 权限名称*/private String name;/*** 父id*/private Long parentId;/*** 权限类型 0菜单 1操作*/private Integer type;/*** 菜单路由*/private String menuUrl;/*** 状态 0启用 1禁用*/private Integer status;/*** 展示状态 0展示 1隐藏*/private Integer show;/*** 图标*/private String icon;/*** 权限唯一标识*/private String permissionKey;/*** 是否被删除 0为删除 1已删除*/private Integer isDeleted;}
2.AuthPermissionDTOConverter.java
package com.sunxiansheng.auth.application.convert;import com.sunxiansheng.auth.application.dto.AuthPermissionDTO;
import com.sunxiansheng.auth.domain.entity.AuthPermissionBO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;import java.util.List;/*** Description: DTO转换* @Author sun* @Create 2024/6/5 15:39* @Version 1.0*/
@Mapper
public interface AuthPermissionDTOConverter {AuthPermissionDTOConverter INSTANCE = Mappers.getMapper(AuthPermissionDTOConverter.class);// 将DTO转换为BOAuthPermissionBO convertDTO2BO(AuthPermissionDTO authPermissionDTO);// 将BO转换为DTOAuthPermissionDTO convertBO2DTO(AuthPermissionBO authPermissionBO);// 将DTO集合转换为BO集合List<AuthPermissionBO> convertDTO2BO(List<AuthPermissionDTO> authPermissionDTOList);// 将BO集合转换为DTO集合List<AuthPermissionDTO> convertBO2DTO(List<AuthPermissionBO> authPermissionBOList);}
2.sun-club-auth-domain
1.AuthPermissionBO.java
package com.sunxiansheng.auth.domain.entity;import lombok.Data;import java.io.Serializable;/*** (AuthPermission)bo** @author makejava* @since 2024-06-06 17:16:58*/
@Data
public class AuthPermissionBO implements Serializable {private Long id;/*** 权限名称*/private String name;/*** 父id*/private Long parentId;/*** 权限类型 0菜单 1操作*/private Integer type;/*** 菜单路由*/private String menuUrl;/*** 状态 0启用 1禁用*/private Integer status;/*** 展示状态 0展示 1隐藏*/private Integer show;/*** 图标*/private String icon;/*** 权限唯一标识*/private String permissionKey;/*** 是否被删除 0为删除 1已删除*/private Integer isDeleted;}
2.AuthPermissionBOConverter.java
package com.sunxiansheng.auth.domain.convert;import com.sunxiansheng.auth.basic.entity.AuthPermission;
import com.sunxiansheng.auth.domain.entity.AuthPermissionBO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;import java.util.List;/*** Description: BO转换* @Author sun* @Create 2024/5/24 9:18* @Version 1.0*/
@Mapper // mapstruct的注解
public interface AuthPermissionBOConverter {AuthPermissionBOConverter INSTANCE = Mappers.getMapper(AuthPermissionBOConverter.class);// 将BO转换为EntityAuthPermission convertBO2Entity(AuthPermissionBO authPermissionBO);// 将Entity转换为BOAuthPermissionBO convertEntity2BO(AuthPermission authPermission);// 将BO集合转换为Entity集合List<AuthPermission> convertBO2Entity(List<AuthPermissionBO> authPermissionBOList);// 将Entity集合转换为BO集合List<AuthPermissionBO> convertEntity2BO(List<AuthPermission> authPermissionList);}
3.新增权限
1.PermissionController.java
package com.sunxiansheng.auth.application.controller;import com.alibaba.fastjson.JSON;
import com.google.common.base.Preconditions;
import com.sunxiansheng.auth.application.convert.AuthPermissionDTOConverter;
import com.sunxiansheng.auth.application.dto.AuthPermissionDTO;
import com.sunxiansheng.auth.common.eneity.Result;
import com.sunxiansheng.auth.domain.entity.AuthPermissionBO;
import com.sunxiansheng.auth.domain.service.AuthPermissionDomainService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/*** Description:* @Author sun* @Create 2024/6/2 17:25* @Version 1.0*/
@RestController
@RequestMapping("/permission/")
@Slf4j
public class PermissionController {@Resourceprivate AuthPermissionDomainService authPermissionDomainService;/*** 新增权限信息* @param authPermissionDTO* @return*/@RequestMapping("add")public Result<Boolean> add(@RequestBody AuthPermissionDTO authPermissionDTO) {try {// 日志if (log.isInfoEnabled()) {log.info("PermissionController add AuthPermissionDTO, authPermissionDTO:{}", JSON.toJSONString(authPermissionDTO));}// 参数校验Preconditions.checkArgument(!StringUtils.isBlank(authPermissionDTO.getName()), "权限名称不能为空");Preconditions.checkNotNull(authPermissionDTO.getParentId(), "父ID不能为空");// 转换DTO为BOAuthPermissionBO authPermissionBO = AuthPermissionDTOConverter.INSTANCE.convertDTO2BO(authPermissionDTO);// 调用领域服务// 新增权限信息Boolean res = authPermissionDomainService.add(authPermissionBO);return Result.ok(res);} catch (Exception e) {// error日志log.error("PermissionController add error:{}", e.getMessage(), e);return Result.fail("新增权限信息失败");}}}
2.sun-club-auth-domain
1.AuthPermissionDomainService.java
package com.sunxiansheng.auth.domain.service;import com.sunxiansheng.auth.domain.entity.AuthPermissionBO;/*** Description:* @Author sun* @Create 2024/5/24 9:03* @Version 1.0*/
public interface AuthPermissionDomainService {/*** 添加* @param authPermissionBO* @return*/Boolean add(AuthPermissionBO authPermissionBO);
}
2.AuthPermissionDomainServiceImpl.java
package com.sunxiansheng.auth.domain.service.impl;import com.sunxiansheng.auth.basic.entity.AuthPermission;
import com.sunxiansheng.auth.basic.entity.AuthRole;
import com.sunxiansheng.auth.basic.service.AuthPermissionService;
import com.sunxiansheng.auth.common.enums.IsDeleteFlagEnum;
import com.sunxiansheng.auth.domain.convert.AuthPermissionBOConverter;
import com.sunxiansheng.auth.domain.convert.AuthRoleBOConverter;
import com.sunxiansheng.auth.domain.entity.AuthPermissionBO;
import com.sunxiansheng.auth.domain.service.AuthPermissionDomainService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;import javax.annotation.Resource;/*** Description:* @Author sun* @Create 2024/5/24 9:03* @Version 1.0*/
@Service
@Slf4j
public class AuthPermissionDomainServiceImpl implements AuthPermissionDomainService {@Resourceprivate AuthPermissionService authPermissionService;@Overridepublic Boolean add(AuthPermissionBO authPermissionBO) {// BO转换为EntityAuthPermission authPermission = AuthPermissionBOConverter.INSTANCE.convertBO2Entity(authPermissionBO);// 调用基础服务// 设置逻辑删除authPermission.setIsDeleted(IsDeleteFlagEnum.UN_DELETED.getCode());// 新增角色Integer count = authPermissionService.insert(authPermission);return count > 0;}
}
3.sun-club-auth-infra
1.AuthPermissionService.java
/*** 新增数据** @param authPermission 实例对象* @return 实例对象*/
Integer insert(AuthPermission authPermission);
2.AuthPermissionServiceImpl.java
/*** 新增数据** @param authPermission 实例对象* @return 实例对象*/
@Override
public Integer insert(AuthPermission authPermission) {return this.authPermissionDao.insert(authPermission);
}
4.测试
1.接口设计
2.测试
4.更新权限
1.PermissionController.java
@RequestMapping("update")
public Result<Boolean> update(@RequestBody AuthPermissionDTO authPermissionDTO) {try {// 日志if (log.isInfoEnabled()) {log.info("PermissionController update AuthPermissionDTO, authPermissionDTO:{}", JSON.toJSONString(authPermissionDTO));}// 参数校验Preconditions.checkNotNull(authPermissionDTO.getId(), "权限ID不能为空");// 转换DTO为BOAuthPermissionBO authPermissionBO = AuthPermissionDTOConverter.INSTANCE.convertDTO2BO(authPermissionDTO);// 调用领域服务// 修改权限信息Boolean res = authPermissionDomainService.update(authPermissionBO);return Result.ok(res);} catch (Exception e) {// error日志log.error("PermissionController update error:{}", e.getMessage(), e);return Result.fail("修改权限信息失败");}
}
2.sun-club-auth-domain
1.AuthPermissionDomainService.java
/*** 修改* @param authPermissionBO* @return*/
Boolean update(AuthPermissionBO authPermissionBO);
2.AuthPermissionDomainServiceImpl.java
@Override
public Boolean update(AuthPermissionBO authPermissionBO) {// BO转换为EntityAuthPermission authPermission = AuthPermissionBOConverter.INSTANCE.convertBO2Entity(authPermissionBO);// 调用基础服务// 修改权限信息Integer count = authPermissionService.update(authPermission);// 有任何的更新,都要与缓存进行同步的修改,要把当前用户的角色和权限都放到redis里return count > 0;
}
3.sun-club-auth-infra
1.AuthPermissionService.java
/*** 修改数据** @param authPermission 实例对象* @return 实例对象*/
Integer update(AuthPermission authPermission);
2.AuthPermissionServiceImpl.java
/*** 修改数据** @param authPermission 实例对象* @return 实例对象*/
@Override
public Integer update(AuthPermission authPermission) {return this.authPermissionDao.update(authPermission);
}
3.AuthPermissionDao.xml 注意show是关键字
4.测试
1.接口设计
2.测试
5.删除权限
1.PermissionController.java
/*** 删除权限信息* @param authPermissionDTO* @return*/
@RequestMapping("delete")
public Result<Boolean> delete(@RequestBody AuthPermissionDTO authPermissionDTO) {try {// 日志if (log.isInfoEnabled()) {log.info("PermissionController delete AuthPermissionDTO, authPermissionDTO:{}", JSON.toJSONString(authPermissionDTO));}// 参数校验Preconditions.checkNotNull(authPermissionDTO.getId(), "权限ID不能为空");// 转换DTO为BOAuthPermissionBO authPermissionBO = AuthPermissionDTOConverter.INSTANCE.convertDTO2BO(authPermissionDTO);// 调用领域服务// 删除权限信息Boolean res = authPermissionDomainService.delete(authPermissionBO);return Result.ok(res);} catch (Exception e) {// error日志log.error("PermissionController delete error:{}", e.getMessage(), e);return Result.fail("删除权限信息失败");}
}
2.AuthPermissionDomainService.java
/*** 删除* @param authPermissionBO* @return*/
Boolean delete(AuthPermissionBO authPermissionBO);
3.AuthPermissionDomainServiceImpl.java
@Override
public Boolean delete(AuthPermissionBO authPermissionBO) {// BO转换为EntityAuthPermission authPermission = AuthPermissionBOConverter.INSTANCE.convertBO2Entity(authPermissionBO);// 设置逻辑删除authPermission.setIsDeleted(IsDeleteFlagEnum.DELETED.getCode());// 更新Integer count = authPermissionService.update(authPermission);return count > 0;
}
4.测试
1.接口设计
2.测试
6.权限与角色关联
1.easycode生成代码
1.配置
2.dao层AuthRolePermissionDao.java的移动到mapper层
3.AuthRolePermission.java 使用lombok优化
4.AuthRolePermissionDao.java 删除Pageable
5.AuthRolePermissionDao.xml 全局替换掉, INTEGER之类的
6.AuthRolePermissionService.java 删除分页查询接口
7.AuthRolePermissionServiceImpl.java 删除分页查询实现类
2.编写DTO和BO
1.sun-club-auth-application-controller
1.AuthRolePermissionDTO.java
package com.sunxiansheng.auth.application.dto;import lombok.Data;import java.io.Serializable;/*** 角色权限关联表(AuthRolePermission)实体类** @author makejava* @since 2024-06-07 14:11:29*/
@Data
public class AuthRolePermissionDTO implements Serializable {private Long id;/*** 角色id*/private Long roleId;/*** 权限id*/private Long permissionId;private Integer isDeleted;}
2.AuthRolePermissionDTOConverter.java
package com.sunxiansheng.auth.application.convert;import com.sunxiansheng.auth.application.dto.AuthRolePermissionDTO;
import com.sunxiansheng.auth.domain.entity.AuthRolePermissionBO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;import java.util.List;/*** Description: DTO转换* @Author sun* @Create 2024/6/5 15:39* @Version 1.0*/
@Mapper
public interface AuthRolePermissionDTOConverter {AuthRolePermissionDTOConverter INSTANCE = Mappers.getMapper(AuthRolePermissionDTOConverter.class);// 将DTO转换为BOAuthRolePermissionBO convertDTO2BO(AuthRolePermissionDTO authRolePermissionDTO);// 将BO转换为DTOAuthRolePermissionDTO convertBO2DTO(AuthRolePermissionBO authRolePermissionBO);// 将DTO集合转换为BO集合List<AuthRolePermissionBO> convertDTOList2BOList(List<AuthRolePermissionDTO> authRolePermissionDTOList);// 将BO集合转换为DTO集合List<AuthRolePermissionDTO> convertBOList2DTOList(List<AuthRolePermissionBO> authRolePermissionBOList);}
2.sun-club-auth-domain
1.AuthRolePermissionBO.java
package com.sunxiansheng.auth.domain.entity;import lombok.Data;import java.io.Serializable;/*** 角色权限关联表(AuthRolePermission)实体类** @author makejava* @since 2024-06-07 14:11:29*/
@Data
public class AuthRolePermissionBO implements Serializable {private Long id;/*** 角色id*/private Long roleId;/*** 权限id*/private Long permissionId;private Integer isDeleted;}
2.AuthRolePermissionBOConverter.java
package com.sunxiansheng.auth.domain.convert;import com.sunxiansheng.auth.basic.entity.AuthRolePermission;
import com.sunxiansheng.auth.domain.entity.AuthRolePermissionBO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;import java.util.List;/*** Description: BO转换* @Author sun* @Create 2024/5/24 9:18* @Version 1.0*/
@Mapper // mapstruct的注解
public interface AuthRolePermissionBOConverter {AuthRolePermissionBOConverter INSTANCE = Mappers.getMapper(AuthRolePermissionBOConverter.class);// 将BO转换为EntityAuthRolePermission convertBO2Entity(AuthRolePermissionBO authRolePermissionBO);// 将Entity转换为BOAuthRolePermissionBO convertEntity2BO(AuthRolePermission authRolePermission);// 将BO集合转换为Entity集合List<AuthRolePermission> convertBOList2EntityList(List<AuthRolePermissionBO> authRolePermissionBOList);// 将Entity集合转换为BO集合List<AuthRolePermissionBO> convertEntityList2BOList(List<AuthRolePermission> authRolePermissionList);}
3.sun-club-auth-application-controller
1.AuthRolePermissionDTO.java 新增permissionIdList字段
2.RolePermissionController.java
package com.sunxiansheng.auth.application.controller;import com.alibaba.fastjson.JSON;
import com.google.common.base.Preconditions;
import com.sunxiansheng.auth.application.convert.AuthPermissionDTOConverter;
import com.sunxiansheng.auth.application.convert.AuthRolePermissionDTOConverter;
import com.sunxiansheng.auth.application.dto.AuthPermissionDTO;
import com.sunxiansheng.auth.application.dto.AuthRolePermissionDTO;
import com.sunxiansheng.auth.common.eneity.Result;
import com.sunxiansheng.auth.domain.entity.AuthPermissionBO;
import com.sunxiansheng.auth.domain.entity.AuthRolePermissionBO;
import com.sunxiansheng.auth.domain.service.AuthRolePermissionDomainService;
import com.sunxiansheng.auth.domain.service.impl.AuthRolePermissionDomainServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/*** Description:* @Author sun* @Create 2024/6/2 17:25* @Version 1.0*/
@RestController
@RequestMapping("/rolePermission/")
@Slf4j
public class RolePermissionController {@Resourceprivate AuthRolePermissionDomainService authRolePermissionDomainService;/*** 新增角色权限信息* @param authRolePermissionDTO* @return*/@RequestMapping("add")public Result<Boolean> add(@RequestBody AuthRolePermissionDTO authRolePermissionDTO) {try {// 日志if (log.isInfoEnabled()) {log.info("RolePermissionController add AuthRolePermissionDTO, authRolePermissionDTO:{}", JSON.toJSONString(authRolePermissionDTO));}// 参数校验Preconditions.checkArgument(!CollectionUtils.isEmpty(authRolePermissionDTO.getPermissionIdList()), "权限ID列表不能为空");Preconditions.checkNotNull(authRolePermissionDTO.getRoleId(), "角色ID不能为空");// 转换DTO为BOAuthRolePermissionBO authRolePermissionBO = AuthRolePermissionDTOConverter.INSTANCE.convertDTO2BO(authRolePermissionDTO);// 调用领域服务// 新增权限信息Boolean res = authRolePermissionDomainService.add(authRolePermissionBO);return Result.ok(res);} catch (Exception e) {// error日志log.error("RolePermissionController add error:{}", e.getMessage(), e);return Result.fail("新增角色权限信息失败");}}}
4.sun-club-auth-domain
1.AuthRolePermissionDomainService.java
package com.sunxiansheng.auth.domain.service;import com.sunxiansheng.auth.domain.entity.AuthRolePermissionBO;/*** Description:* @Author sun* @Create 2024/5/24 9:03* @Version 1.0*/
public interface AuthRolePermissionDomainService {/*** 添加* @param authRolePermissionBO* @return*/Boolean add(AuthRolePermissionBO authRolePermissionBO);
}
2.AuthRolePermissionDomainServiceImpl.java
package com.sunxiansheng.auth.domain.service.impl;import com.sunxiansheng.auth.basic.entity.AuthRolePermission;
import com.sunxiansheng.auth.basic.service.AuthRolePermissionService;
import com.sunxiansheng.auth.common.enums.IsDeleteFlagEnum;
import com.sunxiansheng.auth.domain.convert.AuthRolePermissionBOConverter;
import com.sunxiansheng.auth.domain.entity.AuthRolePermissionBO;
import com.sunxiansheng.auth.domain.service.AuthRolePermissionDomainService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;/*** Description:* @Author sun* @Create 2024/5/24 9:03* @Version 1.0*/
@Service
@Slf4j
public class AuthRolePermissionDomainServiceImpl implements AuthRolePermissionDomainService {@Resourceprivate AuthRolePermissionService authRolePermissionService;@Overridepublic Boolean add(AuthRolePermissionBO authRolePermissionBO) {// BO转换为EntityAuthRolePermission authRolePermission = AuthRolePermissionBOConverter.INSTANCE.convertBO2Entity(authRolePermissionBO);// 得到roleIdLong roleId = authRolePermission.getRoleId();// 构建一个批量插入的列表List<AuthRolePermission> entities = authRolePermissionBO.getPermissionIdList().stream().map(permissionId -> {// 每一个permissionId都构建一个entityAuthRolePermission authRolePermission1 = new AuthRolePermission();authRolePermission1.setRoleId(roleId);authRolePermission1.setPermissionId(permissionId);authRolePermission1.setIsDeleted(IsDeleteFlagEnum.UN_DELETED.getCode());return authRolePermission1;}).collect(Collectors.toList());// 批量插入int count = authRolePermissionService.insertBatch(entities);return count > 0;}
}
3.AuthRolePermissionBO.java 保持跟DTO一致
5.sun-club-auth-infra
1.AuthRolePermissionService.java
/*** 批量新增数据(MyBatis原生foreach方法)* @param entities* @return*/
public int insertBatch(List<AuthRolePermission> entities);
2.AuthRolePermissionServiceImpl.java
/*** 批量新增数据(MyBatis原生foreach方法)** @param entities List<AuthRolePermission> 实例对象列表* @return 影响行数*/
public int insertBatch(List<AuthRolePermission> entities) {return authRolePermissionDao.insertBatch(entities);
}
6.测试
1.接口设计
2.测试
相关文章:

权限模块开发+权限与角色关联(完整CRUD)
文章目录 🌞 Sun Frame:SpringBoot 的轻量级开发框架(个人开源项目推荐)🌟 亮点功能📦 spring cloud模块概览常用工具 🔗 更多信息1.easycode生成代码1.配置2.AuthPermissionDao.java剪切到mapp…...

llama神经网络的结构,llama-3-8b.layers=32 llama-3-70b.layers=80; 2000汉字举例说明
目录 llama-3-8b.layers=32 llama-3-70b.layers=80 llama神经网络的结构 Llama神经网络结构示例 示例中的输入输出大小 实际举例说明2000个汉字文本数据集 初始化词嵌入矩阵 1. 输入层 2. 嵌入层 3. 卷积层 4. 全连接层 llama-3-8b.layers=32 llama-3-70b.laye…...

单细胞数据怎么表现genes mRNA表达的热图?
愿武艺晴小朋友一定得每天都开心 #热图 library("ComplexHeatmap") exp <- AverageExpression(subset(fasting_memory, Celltype %in% c("Pre-B")), layer = "data", #即CPM值 features …...

Java聚合快递对接云洋系统小程序源码
🚀【物流新纪元】聚合快递如何无缝对接云洋系统,效率飙升秘籍大公开!✨ 🔍 开篇揭秘:聚合快递的魅力所在 Hey小伙伴们,你是否还在为多家快递公司账号管理繁琐、订单处理效率低下而头疼?&#…...

MySQL——数据表的基本操作(三)修改数据表
有时候,希望对表中的某些信息进行修改,这时就需要修改数据表。所谓修改数据表指的是修改数据库中已经存在的数据表结构,比如,修改表名、修改字段名、修改字段的数据类型等。在 MySQL中,修改数据表的操作都是使用 ALTER…...

医学图像分割的基准:TransUnet(用于医学图像分割的Transformer编码器)器官分割
1、 TransUnet 介绍 TransUnet是一种用于医学图像分割的深度学习模型。它是基于Transformer模型的图像分割方法,由AI研究公司Hugging Face在2021年提出。 医学图像分割是一项重要的任务,旨在将医学图像中的不同结构和区域分离出来,以便医生可…...

java-swing编写学生成绩查询管理系统
本文是本人大二上实训项目-学生成绩查询管理系统,采用本项目使用Java、MySQL技术。界面框架由Java Swing搭建,用JDBC实现Java与MySQL的连接。 本项目适合初学java和mysql的同学,来做一些小项目来提升自己,因为兴趣所以想要做去尝…...

volatile浅解
volatile修饰的变量有两个特点 线程中修改了自己工作内存中的副本后,立即将其刷新到主内存工作内存中每次读取共享变量时,都会去主内存中重新读取,然后拷贝到工作内存 内存 -> CPU Cache -> CPU 如果没有volatile那么就会继续读取缓存…...

世媒讯带您了解什么是媒体邀约
什么是媒体邀约?其实媒体邀约是一种公关策略,旨在通过邀请媒体记者和编辑参加特定的活动、发布会或其他重要事件,以确保这些活动能够得到广泛的报道和关注。通过这种方式,企业和组织希望能够传达重要信息,提高品牌知名…...

[Kimi 笔记]“面向搜索引擎”
"面向搜索引擎"(Search Engine-Oriented,SEO-Oriented 或 SEO-Friendly)通常指的是在设计和开发网站时,采取一系列措施来优化网站内容和结构,以便提高网站在搜索引擎结果页面(SERP)中…...

如何在亚马逊云科技AWS上利用LoRA高效微调AI大模型减少预测偏差
简介: 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践,并应用到自己的日常工作里。 在机器学习和人工智能领域,生成偏差…...

订单定时状态处理业务(SpringTask)
文章目录 概要整体架构流程技术细节小结 概要 订单定时状态处理通常涉及到对订单状态进行定期检查,并根据订单的状态自动执行某些操作,比如关闭未支付的订单、自动确认收货等. 需求分析以及接口设计 需求分析 用户下单后可能存在的情况: …...

STM32 | ADC+RS485(第十天)
点击上方"蓝字"关注我们 01、ADC概述 ADC, Analog-to-Digital Converter的缩写,指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。真实世界的模拟信号.例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的…...

python打包成能够在mac里面运行的程序
要将你的PyQt5应用程序打包成可以在macOS上运行的独立应用程序,可以使用工具如PyInstaller或py2app。下面是使用py2app的详细步骤,因为它是macOS上专用的打包工具,并且更好地支持PyQt5。 1. 安装py2app 首先,确保你的macOS系统上…...

基于FPGA的数字信号处理(20)--半减器和全减器
目录 1、前言 2、半减器 3、全减器 4、减法器 文章总目录点这里:《基于FPGA的数字信号处理》专栏的导航与说明 1、前言 既然有半加器和全加器,那自然也有半减器和全减器了。尽管在电路中减法的实现基本都是 补码 加法 的形式,但是正所谓…...

Python:单引号,双引号,三引号的区别
在Python中,单引号()、双引号(")和三引号( 或 """)都可以用来定义字符串,但它们之间有一些区别: 单引号()和双引号…...

电子电气架构 ---SOMEIP/SD初入门
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...

一些数学基础概念
一些数学基础概念 概率密度函数(PDF) 概率密度函数(Probability Density Function,简称 PDF)是描述连续随机变量的概率分布的一种函数。它用来表示随机变量在各个取值区间内的概率密度。 1. 定义 对于一个连续随机变量 ( X ),…...

责任有限公司的一般组织结构
责任有限公司(有限责任公司,LLC)的组织结构通常是为了确保公司运营的有效性和管理的透明度。以下是一般责任有限公司的组织结构及其主要组成部分: 1. 股东(Shareholders) 职责和角色 所有者:…...

Leetcode3227. 字符串元音游戏
Every day a Leetcode 题目来源:3227. 字符串元音游戏 解法1:博弈论 分类讨论: 如果 s 不包含任何元音,小红输。如果 s 包含奇数个元音,小红可以直接把整个 s 移除,小红赢。如果 s 包含正偶数个元音&am…...

网络流量分析在运维管理中的重要性与实施策略
在运维管理工作中,网络流量分析是一项不可或缺的技术手段。通过对网络流量的深入剖析,运维团队能够更全面地了解网络状态,及时发现潜在问题,优化网络性能,从而确保企业网络的稳定与高效运行。本文将详细探讨网络流量分…...

通信原理实验——PCM编译码
PCM编译码 实验目的 理解PCM编译码原理及PCM编译码性能熟悉PCM编译码专用集成芯片的功能和使用方法及各种时钟关系熟悉语音数字化技术的主要指标及测量方法 主要仪器设备及软件 硬件:多功能实验箱、示波器、导线 软件:无 实验原理 1. 抽样信号的量…...

matlab的strel()函数的使用方法(OK)
这个函数 是形态学的结构元素 使用方法如下 SE strel(nhood) SE strel("diamond",r) SE strel("disk",r) SE strel("disk",r,n) SE strel("octagon",r) SE strel("line",len,deg) SE strel("rectangle",…...

Linux:Linux权限解析
一、Linux下的用户分类 在Linux下,有两种用户,一种是超级用户,一种是普通用户 超级用户:可以再linux系统下做任何事情,不受权限限制(制定规则,但不需要遵守规则) 普通用户࿱…...

Spring面试篇章——IOC
IOC概念和原理 IOC概念 IOC就是控制反射,把对象创建和对象之间的调用过程,交给Spring进行管理使用IOC的目的:降低耦合度 IOC底层原理 xml解析、工厂模式、反射 图解: 原始模式 耦合度太高了,即当dao改了…...

适合制造业的项目管理软件都有哪些?
项目管理软件涉及进度、预算成本、资源、开发、流程、质量、风险、工时、知识文档、商务等各个方面,是企业项目管理领域的重要辅助工具,能够帮助组织提高项目管理水平与质量,确保项目顺利进行。 一、 奥博思 PowerProject 项目管理系统 Pow…...

微应用(Micro-Applications)、微前端(Micro Frontend)、Qiankun 框架之间的区别和联系
简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo :联系我们:VX :tja6288 / EMAIL: 347969164@qq.com 文章目录 微应用(Micro-Applications)、微…...

String的底层构造
1.String类对象的构造(后面有每一个接口的实现) #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #include<iostream> #include<assert.h> using namespace std;namespace bit {class string{public:typedef char* iterator;typedef const…...

Binder机制的原理
Binder机制是Android系统中用于进程间通信(IPC)的核心机制,它基于C/S(客户端-服务端)模型,允许不同进程间进行高效的通信和数据交换。以下是对Binder机制原理的详细解析: 1. Binder架构 Binde…...

JavaScript输出数据的方法?
在JavaScript中,输出数据有以下几种方法: 使用console.log()函数:使用console.log()函数可以将数据输出到浏览器的控制台,例如: console.log("Hello, World!");使用alert()函数:使用alert()函数…...