Java 使用@Column获取变量
我正在使用Spring将我的cassandra表映射到pojoJava 使用@Column获取变量,java,spring,cassandra,Java,Spring,Cassandra,我正在使用Spring将我的cassandra表映射到pojo @Table(value="student_data") public class StudentTable { @PrimaryKey private String primaryKey; @Column(value="column_name1") private String columnName1; @Column(value="column_name2") private
@Table(value="student_data")
public class StudentTable
{
@PrimaryKey
private String primaryKey;
@Column(value="column_name1")
private String columnName1;
@Column(value="column_name2")
private String columnName2;
@Column(value="column_name3")
private String columnName3;
/*
getters and setters
*/
}
现在,我从数据库中获取数据,并创建一个StudentTable列表来存储数据cassandraOperations.select(select,StudentTable.class)
我想根据列名获取值。
类似于获取特定StudentTable对象的列\u name1的get值。您可以尝试使用
org.apache.commons.lang3.reflect.FieldUtils
通过@column
注释来过滤此类字段的值
例如:
public void testStudent() throws IllegalArgumentException, IllegalAccessException {
StudentTable student = new StudentTable();
student.setColumnName1("Student 1 Name");
String columnValue = null;
Field[] fields = org.apache.commons.lang3.reflect.FieldUtils.getAllFields(StudentTable.class);
for(Field f : fields) {
Column columnAnnotation = f.getAnnotation(Column.class);
if(columnAnnotation != null && StringUtils.equals(columnAnnotation.name(), "column_name1")) {
f.setAccessible(true);
columnValue = (String) f.get(student);
}
}
System.out.println(columnValue);
}
打印结果:
学生1姓名基于
CqlTemplate
有一种更简单的方法CqlTemplate
是CassandRateTemplate
用于直接与CQL交互的组件。您可以发出查询并获得地图
:
CqlTemplate cqlTemplate = …;
Map<String, Object> map = cqlTemplate.queryForMap(select);
CqlTemplate CqlTemplate=…;
Map Map=cqlTemplate.queryForMap(选择);
地图由CQL列名(通常为小写)键入。谢谢您的回答。成功了。关于更多的问题,我需要对大量数据进行分析。这是更好的方法还是使用JoSql(Java对象上的sql查询)?我不熟悉JoSql,但它看起来很有趣。但是我不能告诉你其中一个的好处。。