JDBI3 返回参数化 Class
JDBI3 Returning a Parameterized Class
我有一个抽象的 EntryPoint class,看起来像这样:
public abstract class EntryPoint<T extends Tag> implements Serializable {
public EntryPoint(){}
protected ArrayList<T> tiedTags;
public abstract ArrayList<T> getTiedTags();
public abstract void setTiedTags(List<T> tiedTags);
}
然后我有此 EntryPoint class 的子class,每个只接受一种标签。例如,SNMPEntryPoint 仅存储 SNMPTag。 subclasses 提供抽象方法的实现:
public class SNMPEntryPoint extends EntryPoint<SNMPTag> implements Serializable {
//Default Constructor for Serialization
public SNMPEntryPoint(){}
@Override
public ArrayList<SNMPTag> getTiedTags(){ return tiedTags; }
//etc
}
有没有办法创建一个 returns 参数化列表 class 的 JDBI 查询?目前,这就是我正在做的事情:
public List<SNMPEntryPoint> getSNMPEntryPoints(){
try(Handle handle = daoFactory.getDataSourceController().open()) {
return handle.createQuery("SELECT * FROM dbo.EntryPoints WHERE Active = 1 AND SiteID = :sID AND Protocol = 'SNMP'")
.mapToBean(SNMPEntryPoint.class)
.list();
}
catch(Exception e){
if(sysconfig.getVerbose()){ e.printStackTrace(); }
}
return null;
}
但这感觉像是对 class 的原始使用。所以我想我的问题是,如果我使用此代码生成 SNMPEntryPoints,然后在这些 EntryPoints 上调用 getTiedTags 或 setTiedTags,是否可行?以这种方式创建我的 SNMPEntryPoint 对象是否违反了任何编码约定?
只是想结束这个。我的 classes 实际上没有参数化。正如您在上面看到的那样,它们扩展了参数化抽象 class,但是 SNMPEntryPoint 实际上不接受任何参数,因此不需要做任何与我上面所做的不同的事情。
我有一个抽象的 EntryPoint class,看起来像这样:
public abstract class EntryPoint<T extends Tag> implements Serializable {
public EntryPoint(){}
protected ArrayList<T> tiedTags;
public abstract ArrayList<T> getTiedTags();
public abstract void setTiedTags(List<T> tiedTags);
}
然后我有此 EntryPoint class 的子class,每个只接受一种标签。例如,SNMPEntryPoint 仅存储 SNMPTag。 subclasses 提供抽象方法的实现:
public class SNMPEntryPoint extends EntryPoint<SNMPTag> implements Serializable {
//Default Constructor for Serialization
public SNMPEntryPoint(){}
@Override
public ArrayList<SNMPTag> getTiedTags(){ return tiedTags; }
//etc
}
有没有办法创建一个 returns 参数化列表 class 的 JDBI 查询?目前,这就是我正在做的事情:
public List<SNMPEntryPoint> getSNMPEntryPoints(){
try(Handle handle = daoFactory.getDataSourceController().open()) {
return handle.createQuery("SELECT * FROM dbo.EntryPoints WHERE Active = 1 AND SiteID = :sID AND Protocol = 'SNMP'")
.mapToBean(SNMPEntryPoint.class)
.list();
}
catch(Exception e){
if(sysconfig.getVerbose()){ e.printStackTrace(); }
}
return null;
}
但这感觉像是对 class 的原始使用。所以我想我的问题是,如果我使用此代码生成 SNMPEntryPoints,然后在这些 EntryPoints 上调用 getTiedTags 或 setTiedTags,是否可行?以这种方式创建我的 SNMPEntryPoint 对象是否违反了任何编码约定?
只是想结束这个。我的 classes 实际上没有参数化。正如您在上面看到的那样,它们扩展了参数化抽象 class,但是 SNMPEntryPoint 实际上不接受任何参数,因此不需要做任何与我上面所做的不同的事情。