CSV和集合对象基于Annotation操作封装
2013-05-16 21:44
225 查看
随着项目上线,暂时处于闲置状态,所以趁闲带着团队对在这一年项目中做的比较好的组件,工具和实践总结和抽取出来,在我后续的随笔中将会陆续发布出来。今天主要是一个简单的maven小组件,对opencsv基于Annotation简单的封装,使得我们可以轻易的将CSV文件转化为List对像和把List对像导出为CSV文件。
项目托管地址于github https://github.com/greengerong/opencsv-utils。
对于代码就不用多说了,简单看看如何使用。
Object
Mapping会自动将没有ignore的字段作为CSV的映射属性名作为CSV列头,如果针对特殊列则可以标记@CSV解决。
1: 读取CSV:
(1) 基于Annotation映射方式
(2) 自定义映射方式
2: CSV输出
最后在累赘下托管地址:https://github.com/greengerong/opencsv-utils。其他的相比不用再说了。
项目托管地址于github https://github.com/greengerong/opencsv-utils。
对于代码就不用多说了,简单看看如何使用。
Object
package opencsv.utils; public class Person { private int id; @Csv("person name") private String name; @Ignore private int age; public Person(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public Person() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Mapping会自动将没有ignore的字段作为CSV的映射属性名作为CSV列头,如果针对特殊列则可以标记@CSV解决。
1: 读取CSV:
(1) 基于Annotation映射方式
@Test public void shouldGetPersonFromCSV() throws Exception { StringReader reader = new StringReader("id,person name\n1,name1\n2,name2\n"); List<Person> personList = personCsvMapper .withMapping("id", "id") .withMapping("person name", "name") .fromCsv(reader); assertThat(personList.size(), is(2)); final Person first = personList.get(0); assertThat(first.getId(), is(1)); assertThat(first.getName(), is("name1")); final Person second = personList.get(1); assertThat(second.getId(), is(2)); assertThat(second.getName(), is("name2")); }
(2) 自定义映射方式
@Test public void shouldToCsv() throws Exception { personCsvMapper.withMapping(new CsvColumnMapping(Person.class)); final ArrayList<Person> list = new ArrayList<Person>(); list.add(new Person(1, "name1", 20)); list.add(new Person(2, "name2", 30)); final StringWriter writer = new StringWriter(); personCsvMapper.toCsv(writer, list); final String text = writer.toString(); assertThat(text, is("id,person name\n1,name1\n2,name2\n")); }
2: CSV输出
@Test public void shouldGetPersonFromCsv() throws Exception { StringReader reader = new StringReader("id,person name\n1,name1\n2,name2\n"); List<Person> personList = new CsvMapper<Person>(Person.class) .withMapping(new CsvColumnMapping(Person.class)) .fromCsv(reader); assertThat(personList.size(), is(2)); final Person first = personList.get(0); assertThat(first.getId(), is(1)); assertThat(first.getName(), is("name1")); final Person second = personList.get(1); assertThat(second.getId(), is(2)); assertThat(second.getName(), is("name2")); }
最后在累赘下托管地址:https://github.com/greengerong/opencsv-utils。其他的相比不用再说了。
相关文章推荐
- CSV和集合对象基于Annotation操作封装 推荐
- MongoDB学习笔记~自己封装的Curd操作(查询集合对象属性,更新集合对象)
- iOS-基于FMDB的操作封装,模型对象的增删改查
- Mybatis简单增删改查操作 4000 基于Annotation
- 集合类操作:未将对象引用设置到对象的实例
- matlab学习笔记(十三)---基于对象的操作
- 在全局对象(不是指针)的构造函数里不要对std集合做太多操作
- 第八课等于之集合对象的操作——C#计算器编程教学
- 用类封装精灵的操作,并实例化各种精灵对象 精灵的数字序号使用单例模式的数字生成器实现
- 在Eclipse中测试MySQL-JDBC(5)查询1-4之间的所有员工,并且封装为一个个的employee对象,并且存储到一个集合中
- 泛型练习(创建泛型类操作Map集合里的对象)
- jquery 操作对象和集合
- UserControl 中包含封装了集合对象的属性被设计器自动初始化所引起的错误!也有关于List的问题
- JS如何封装一些列方法为一个对象的操作,然后集中管理这些操作,方便修改和调用
- 基于自己封装的微信api操作案例
- [Rest]Microsoft Dynamics CRM 2011的JS开发REST操作精简封装,增删改查集合
- 基于Xstream工具解决对象到xml文本的集合节点重复问题
- JS 实现 创建类、继承、方法添加、对象克隆、数组封装操作
- Spring框架针对dao层的jdbcTemplate操作crud之query查询数据操作 —— 查询表,返回结果为对象的list集合
- OC 数组对象的操作 方法集合