Skip to main content

后端工具类

本文档介绍了 open-admin 后端框架中提供的核心工具类。

ExcelUtils

Excel导入导出工具类,推荐构造单独的Bean用于导入导出。

方法列表

方法说明参数返回值
importExcel(cls, is)导入Excel(Class<T>, InputStream)List<T>
exportExcel(cls, list, os)导出Excel(Class<T>, List<T>, OutputStream)-

使用注解:使用@Remark注解来映射Excel列与实体字段。

使用示例

// 在实体类上使用@Remark注解
public class User {
@Remark("用户名")
private String username;

@Remark("年龄")
private Integer age;

// getter/setter...
}

// 导入Excel
List<User> users = io.github.jiangood.openadmin.lang.excel.ExcelTool.importExcel(User.class, inputStream);

// 导出Excel
io.github.jiangood.openadmin.lang.excel.ExcelTool.exportExcel(User.class, users, outputStream);

JdbcUtils

Spring Boot环境下的原生SQL工具类,基于Spring的JdbcTemplate封装,专注于执行复杂的原生SQL查询和更新。

方法列表

方法说明参数返回值
update(sql, params...)执行更新、插入或删除操作(String, Object...)int
batchUpdate(sql, batchArgs)执行批量更新操作(String, List<Object[]>)int[]
execute(sql, params...)执行任意SQL语句(String, Object...)int
executeQuietly(sql, params...)执行SQL忽略异常(String, Object...)int
findOne(cls, sql, params...)查询单条记录并映射到Java Bean(Class<T>, String, Object...)T
findOneMap(sql, params...)查询单条记录并返回Map(String, Object...)Map<String, Object>
findAll(cls, sql, params...)查询多条记录并映射到Java Bean列表(Class<T>, String, Object...)List<T>
findAllMap(sql, params...)查询多条记录并返回Map列表(String, Object...)List<Map<String, Object>>
findScalar(sql, params...)查询结果集的第一个值(String, Object...)Object
findLong(sql, params...)查询结果集的第一个值并转换为Long(String, Object...)Long
findInteger(sql, params...)查询结果集的第一个值并转换为Integer(String, Object...)Integer
findColumnList(elementType, sql, params...)查询某一列并返回该列值的列表(Class<T>, String, Object...)List<T>
exists(sql, params...)检查记录是否存在(String, Object...)boolean
findMapDict(sql, params...)查询列表并组装成字典Map(String, Object...)Map<String, Object>
findBeanMap(cls, sql, params...)查询列表并映射到Map,以第一个字段作为键(Class<V>, String, Object...)Map<K, V>
findMapKeyed(sql, params...)查询列表并映射到Map,以第一列作为键(String, Object...)Map<K, Map<String, Object>>
findAll(cls, pageable, sql, params...)执行分页查询并返回Page对象(Class<T>, Pageable, String, Object...)Page<T>
insert(tableName, bean)根据Bean数据动态构建SQL插入记录(String, Object)int
insert(tableName, map)根据Map数据动态构建SQL插入记录(String, Map<String, Object>)int
updateById(table, bean)根据Bean数据更新记录(String, Object)int
updateById(table, map)根据Map数据更新记录(String, Map<String, Object>)int
update(table, bean, whereClause, whereParams...)通用更新(String, Object, String, Object...)int
update(table, map, whereClause, whereParams...)通用更新(String, Map<String, Object>, String, Object...)int
tableExists(tableName)检查表是否存在(String)boolean
columnExists(tableName, columnName)检查列是否存在(String, String)boolean
dropTable(tableName)删除表(String)int
getTableNames()获取所有表名-Set<String>
getColumnLabels(sql)获取查询结果的列标签(String)String[]
generateCreateTableSql(cls, tableName)根据类结构生成CREATE TABLE语句(Class<?>, String)String

使用示例

import io.github.jiangood.openadmin.lang.jdbc.DbTool;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.PageRequest;

// 查询单个用户
User user = dbTool.findOne(User.class, "SELECT * FROM user WHERE id = ?", 1);

// 查询用户列表
List<User> users = dbTool.findAll(User.class, "SELECT * FROM user WHERE status = ?", 1);

// 分页查询
Pageable pageable = PageRequest.of(0, 10);
Page<User> userPage = dbTool.findAll(User.class, pageable, "SELECT * FROM user", new Object[]{});

// 插入数据
User user = new User();
user.setName("张三");
user.setAge(25);
dbTool.insert("t_user", user);

// 更新数据
dbTool.updateById("t_user", user);

// 检查记录是否存在
boolean exists = dbTool.exists("SELECT * FROM user WHERE name = ?", "张三");

LoginUtils

登录用户信息获取工具类。

方法列表

方法说明返回值
getUserId()获取当前登录用户IDString
getUser()获取当前登录用户信息LoginUser
getOrgPermissions()获取当前登录用户机构权限List<String>
getPermissions()获取当前登录用户权限List<String>
getRoles()获取当前登录用户角色List<String>
isAdmin()判断当前用户是否为管理员boolean

使用示例

import io.github.jiangood.openadmin.modules.common.LoginTool;

// 获取当前登录用户ID
String userId = LoginTool.getUserId();

// 获取当前登录用户信息
LoginUser user = LoginTool.getUser();

// 获取当前登录用户权限
List<String> permissions = LoginTool.getPermissions();

// 判断当前用户是否为管理员
boolean isAdmin = LoginTool.isAdmin();

// 权限检查示例
if (!LoginTool.isAdmin() && !LoginTool.getPermissions().contains("user:edit")) {
throw new AccessDeniedException("无权限编辑用户");
}

RemarkUtils

获取字段、类、枚举等的@Remark注解值的工具类。

方法列表

方法说明参数返回值
getRemark(field)获取字段的Remark注解值(Field)String
getRemark(cls)获取类的Remark注解值(Class<?>)String
getRemark(enum)获取枚举的Remark注解值(Enum<?>)String
getRemark(method)获取方法的Remark注解值(Method)String

使用示例

import io.github.jiangood.openadmin.lang.annotation.RemarkTool;
import java.lang.reflect.Field;

// 获取类的Remark注解值
String className = RemarkTool.getRemark(User.class);

// 获取字段的Remark注解值
Field nameField = User.class.getDeclaredField("name");
String fieldName = RemarkTool.getRemark(nameField);

// 获取枚举的Remark注解值
String enumRemark = RemarkTool.getRemark(UserStatus.ACTIVE);