Result<T> implements Serializable
时间: 2024-08-15 14:04:25 浏览: 35
`Result<T>`是一个泛型类,它实现了`Serializable`接口。在Java中,`Serializable`是一个标记接口,用于指示一个类能够序列化(Serialization),即将其状态转换为字节流以便存储或在网络上传输,然后在需要的时候可以恢复到原来的状态。
当你声明`Result<T>`类实现了`Serializable`,这意味着这个类的所有实例都可以被转换为字节流,并能够在不同的Java应用程序之间跨进程传输。这对于构建分布式系统、网络通信以及需要持久化的数据处理非常有用。
相关问题
public abstract class BaseScheme implements Serializable { protected static Map<String, String> scheme; public static <T> Map<String, Object> dataMapping(T data, Class<T> tClass) throws NoSuchFieldException, IllegalAccessException { Map<String, Object> result = new HashMap<>(scheme.size()); for (Map.Entry<String, String> entry : scheme.entrySet()) { Field field = tClass.getDeclaredField(entry.getValue()); field.setAccessible(true); Object value = field.get(data); result.put(entry.getKey(), value); } return result; } public static <T> List<Map<String, Object>> dataListMapping(List<T> list, Class<T> tClass) throws NoSuchFieldException, IllegalAccessException { List<Map<String, Object>> result = new ArrayList<>(); for (T item : list) { result.add(dataMapping(item, tClass)); } return result; } } 子类继承BaseScheme,调用dataMapping方法,怎么使用到自己的scheme变量
如果子类需要使用自己的`scheme`变量,可以在子类中重新定义一个同名的静态变量,并赋上对应的值。然后在调用`dataMapping`方法时,使用子类中的`scheme`变量即可。
例如,假设子类为`ChildScheme`,需要使用自己的`scheme`变量,那么可以在`ChildScheme`中重新定义一个同名的静态变量,并赋上对应的值,例如:
```
public class ChildScheme extends BaseScheme {
protected static Map<String, String> scheme = new HashMap<>();
static {
scheme.put("key1", "value1");
scheme.put("key2", "value2");
}
// other methods and fields
}
```
然后在调用`dataMapping`方法时,使用`ChildScheme`中的`scheme`变量即可,例如:
```
ChildScheme.scheme // 使用子类的 scheme 变量
ChildScheme.dataMapping(data, tClass) // 调用父类的 dataMapping 方法
```
public Integer deleteByIds(List<Integer> ids) { } 用这个方法写个逻辑删除,用mybatis-plus,这是VO类 @Data @ApiModel(value = "飞行任务管理-后端列表页vo") public class BisTaskVO extends PageReqVO implements Serializable { @ApiModelProperty(value = "id") private Integer id; @ApiModelProperty(value = "逻辑删除 1是 0否") private Integer isDel; @TableField(exist = false) private List<Integer> ids; } 再用DataResult写个调用方法,不要写mapper和sql
好的,可以参考以下代码:
```java
@Service
public class BisTaskService {
@Autowired
private BisTaskMapper bisTaskMapper;
/**
* 批量逻辑删除
*/
public DataResult<Object> deleteByIds(List<Integer> ids) {
DataResult<Object> result = new DataResult<>();
if (CollectionUtils.isEmpty(ids)) {
result.setResultCode(ResultCode.PARAM_ERROR);
result.setResultMessage("ids不能为空");
return result;
}
int count = bisTaskMapper.deleteByIds(ids);
result.setData(count);
return result;
}
}
@Mapper
public interface BisTaskMapper extends BaseMapper<BisTask> {
/**
* 批量逻辑删除
*/
int deleteByIds(List<Integer> ids);
}
```
其中,BisTaskMapper 继承自 Mybatis-Plus 的 BaseMapper,无需写 SQL 语句,直接调用 Mapper 的 deleteByIds 方法即可实现批量逻辑删除。BisTaskService 中的 deleteByIds 方法中,先判断 ids 是否为空,然后调用 Mapper 的 deleteByIds 方法,最后将删除的数量封装到 DataResult 中返回。
阅读全文