Jfinal和Jackson关于大小写敏感的注意

本文探讨了Jfinal框架中ActiveRecordPlugin对于数据库字段名大小写的处理方式及其配置选项,并介绍了Jackson库中对象映射器对于JSON字段大小写的敏感性配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jfinal中的大小写敏感

这是工作中由于不规范或者偷懒,没有严格遵循驼峰原则造成的。

参数位置:

 ActiveRecordPlugin arp = new ActiveRecordPlugin(group, dp);
//区分大小写,对字段名不做转换,默认是这个
// arp.setContainerFactory(new CaseInsensitiveContainerFactory());
// 不区分大小写 但是最后字段名统一小写
//arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));

复现:

如果设置不区分大小写

record.set("S",1)  得到的是s=1的Record

Jackson中大小写敏感

#默认是false 大小写脱敏,字段名中的大写字母会统一修改为消息,如果希望不做修改,改为true

objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES,false);

复现:

默认状态下,如果json字符串中 的S=1,转换模板中的S也是大写,json转对象时候S的赋值会失败,为空。如果希望能够赋值,需要将上述参数修改为true 

### Java 中高效的大型 CSV 文件读写方法 对于处理大型 CSV 文件,在 Java 生态中有多个库可以提供高效的支持。以下是几个推荐的选择: #### 使用 uniVocity-parsers 处理大文件 uniVocity-parsers 是一个非常快速且功能全面的解析器,能够很好地应对大规模数据集。该工具不仅限于 CSV 格式,还支持其他结构化文本格式如 TSV 定宽记录。 ```java import com.univocity.parsers.csv.CsvParser; import com.univocity.parsers.csv.CsvParserSettings; public class LargeCsvReader { public static void main(String[] args) throws Exception { CsvParserSettings settings = new CsvProcessorSettings(); settings.setNumberOfRowsToSkip(1); // 跳过表头 CsvParser parser = new CsvParser(settings); try (BufferedReader br = Files.newBufferedReader( Paths.get("large_file.csv"), StandardCharsets.UTF_8)) { String line; while ((line = br.readLine()) != null) { String[] row = parser.parseLine(line); System.out.println(Arrays.toString(row)); } } } } ``` 此代码片段展示了如何利用 `uniVocity-parsers` 库逐行读取并打印每一行的内容[^1]。 #### 利用 OpenCSV 进行流式操作 OpenCSV 提供了一种简单的方式来解析 CSV 数据,并允许通过设置合理的缓冲区大小来优化性能表现。当面对特别庞大的文件时,采用流的方式能有效减少内存占用。 ```java import java.io.BufferedReader; import java.nio.file.Files; import java.nio.file.Paths; import org.apache.commons.lang3.ArrayUtils; import com.opencsv.bean.CsvToBeanBuilder; public class StreamLargeCsvWithOpencsv { private static final int BUFFER_SIZE = 8 * 1024; public static void process() throws IOException { try (BufferedReader reader = Files.newBufferedReader( Paths.get("very_large_file.csv"), StandardCharsets.UTF_8, BUFFER_SIZE)) { Iterable<YourDataClass> beans = new CsvToBeanBuilder(reader) .withType(YourDataClass.class).build().parse(); for (YourDataClass bean : beans) { // 对象处理逻辑... } } catch (IOException e) { throw new RuntimeException(e.getMessage(), e.getCause()); } } } ``` 上述例子说明了怎样借助 `opencsv` 实现基于对象映射的大规模 CSV 流式读入。 #### Jackson 的 CSV 扩展模块 Jackson-dataformat-csv 可以作为 JSON 解析框架 Jackson 的扩展用于序列化反序列化 CSV 文档。它同样适用于批量导入导出场景下的大数据量传输需求。 ```java import com.fasterxml.jackson.databind.MappingIterator; import com.fasterxml.jackson.dataformat.csv.CsvMapper; import com.fasterxml.jackson.core.type.TypeReference; public class BatchProcessUsingJacksonCsv { public static List<MyPojo> loadAllRecordsFromCsvFile(File csvInputFile) throws IOException { CsvSchema schema = CsvSchema.emptySchema().withHeader(); CsvMapper mapper = new CsvMapper(); MappingIterator<MyPojo> it = mapper.readerFor(MyPojo.class) .with(schema) .readValues(csvInputFile); return it.readAll(); } } ``` 这里给出了使用 `jackson-dataformat-csv` 将整个 CSV 文件一次性加载到列表中的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值