1.mysql case when 的应用
mysql 中有一个类似于java switch的应用,就是case when
SELECT p.name,p.age,
CASE
p.sex
WHEN 1 THEN
'男'
WHEN 2 THEN
'女'
END ,
p.address
FROM user p
类似于java的switch
switch (表达式) {
case 常量表达式或枚举常量:
语句;
break;
case 常量表达式或枚举常量:
语句;
break;
......
default: 语句;
break;
}
java 组织树的实现
实体类包含自身实体类
@Data
@ToString
public class DepartmentDTO implements Serializable {
/**
* Id
*/
private Integer id;
/**
* 部门名称
*/
private String name;
/**
* 部门英文简称
*/
private String enName;
/**
* 部门编码
*/
private String code;
/**
* 部门类型
*/
private String orgType;
/**
* 排序
*/
private Integer orgOrder;
/**
* 父级编码
*/
private String parentCode;
/**
* 父级部门名称
*/
private String parentName;
/**
* 子级部门信息
*/
private List<DepartmentDTO> children;
}
实现:用了两次for循环,遍历组织树找到组织自组织设置到组织属性中
/**
* 获取部门信息并返回组织树
*/
public List<DepartmentDTO> getDeptTree() {
List<Department> departments = departmentRepository.findAll();
List<DepartmentDTO> departmentDtos = new ArrayList<>();
List<DepartmentDTO> treeList = new ArrayList<>();
try {
for (Department department : departments) {
DepartmentDTO departmentDTO = new DepartmentDTO();
BeanUtils.copyProperties(department, departmentDTO);
departmentDtos.add(departmentDTO);
}
if (departmentDtos.size() > 0) {
for (DepartmentDTO tree : departmentDtos) {
//找到根
if (ROOT_PARENT.equals(tree.getParentCode())) {
treeList.add(tree);
}
//找到子,这一步建立起了树结构
for (DepartmentDTO treeNode : departmentDtos) {
if (treeNode.getParentCode().equals(tree.getCode())) {
if (tree.getChildren() == null) {
List<DepartmentDTO> childrenList = new ArrayList<>();
tree.setChildren(childrenList);
}
tree.getChildren().add(treeNode);
}
}
if (tree.getChildren() != null) {
//将查询到子级树进行排序
tree.getChildren().sort(Comparator.comparingInt(DepartmentDTO::getOrgOrder));
}
}
}
return treeList;
} catch (BeansException e) {
e.printStackTrace();
return treeList;
}
}
驼峰格式字符串转换为下划线格式字符串
实现过程:遍历字符串每个字符,若为大写字符,在新的字符串前加_并加其小写字符,若为小写字符直接加小写字符
/**
* 驼峰格式字符串转换为下划线格式字符串
* @param param
* @return
*/
public static String camelToUnderline(String param) {
if (param == null || "".equals(param.trim())) {
return "";
}
int len = param.length();
StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++) {
char c = param.charAt(i);
if (Character.isUpperCase(c)) {
sb.append(UNDERLINE);
sb.append(Character.toLowerCase(c));
} else {
sb.append(c);
}
}
return sb.toString();
}