相关疑难解决方法(0)

JDBI SQL对象查询中的动态顺序

如何在JDBI中使用SQL对象查询进行排序?

我想做的事情如下:

@SqlQuery(
    "SELECT * FROM users " +
    "WHERE something = :something " +
    "ORDER BY :orderBy :orderDir"
)
List<User> getUsers(
    @Bind("something") Integer something
  , @BindOrderBy("orderBy") String orderBy
  , @BindOrderDir("orderDir") String orderDir
);
Run Code Online (Sandbox Code Playgroud)

要么

@SqlQuery(
    "SELECT * FROM users " +
    "WHERE something = :something " +
    "ORDER BY :orderBy :orderDir"
)
List<User> getUsers(
    @Bind("something") Integer something
  , @Bind("orderBy") OrderBy orderBy
  , @Bind("orderDir") OrderDir orderDir
);
Run Code Online (Sandbox Code Playgroud)

java sql-order-by sqlobject jdbi

12
推荐指数
1
解决办法
9275
查看次数

根据对象的参数化属性对对象列表进行排序

假设我们有一个具有以下属性的对象:

public class MyObject {

    private String attr1;
    private Integer attr2;

    //...

    public String getAttr1() {
        return this.attr1;
    }

    public Integer getAttr2() {
        return this.attr2;
    }
}
Run Code Online (Sandbox Code Playgroud)

mylist根据其属性对此对象的列表进行排序的一种方法attr1是:

mylist.sort(Comparator.comparing(MyObject::getAttr1));
Run Code Online (Sandbox Code Playgroud)

是否可以以动态方式在方法中使用此代码,并使用getAttr1根据其名称返回对象属性的getter的方法替换该部分?就像是:

public void sortListByAttr(List<MyObject> list, String attr) {
    list.sort(Comparator.comparing(MyObject::getGetterByAttr(attr)));
}
Run Code Online (Sandbox Code Playgroud)

MyObject::getGetterByAttr(attr)部分不编译,我写的只是作为一个例子来解释我的想法

我尝试使用以下代码实现一个方法new PropertyDescriptor(attr, MyObject.class).getReadMethod().invoke(new MyObject())但是仍然无法使用该方法中的参数调用comparing方法

java-8

2
推荐指数
1
解决办法
118
查看次数

标签 统计

java ×1

java-8 ×1

jdbi ×1

sql-order-by ×1

sqlobject ×1