可调用的 Dao 动态方法
Callable Dao dynamic method
我需要做这样的事情:
正在创建一个可调用对象,并将其传递给 ThreadPoolExecutor。 Callable其实就是一个Dao,应该执行不同的功能。因为不能直接将参数传递给 call() 函数,所以我想做这样的事情,在创建对象时立即执行代码:
像这样创建 class:
public class FooRecordDatabaseInsert {
static {
//execute some code
}
}
可调用对象现在看起来像这样:
@Override
public Foo call() {
this.startOperation();
}
但我必须向此 class 传递参数,例如实体。
是否有可能创建一个 class ,它有一个带参数的函数,在创建对象时立即执行?
或者可能有完全不同的解决方案?
您应该更喜欢使用以实体作为参数的构造函数。
如果我没理解错的话,你想要一个调用带有参数的 DAO 方法的 Callable。
所以你想要这样的东西:
final MyDAO dao = ...;
Callable<Foo> callable = new Callable<>() {
@Override
public Foo call() {
return dao.someMethod(1, 2, 3);
}
};
这称为匿名内部 class,在进行高级、复杂、多线程的工作之前,您绝对应该了解它们。
使用 Java 8,您可以使用 lambda 使事情变得更简单:
MyDAO dao = ...;
Callable<Foo> callable = () -> dao.someMethod(1, 2, 3);
我需要做这样的事情:
正在创建一个可调用对象,并将其传递给 ThreadPoolExecutor。 Callable其实就是一个Dao,应该执行不同的功能。因为不能直接将参数传递给 call() 函数,所以我想做这样的事情,在创建对象时立即执行代码:
像这样创建 class:
public class FooRecordDatabaseInsert {
static {
//execute some code
}
}
可调用对象现在看起来像这样:
@Override
public Foo call() {
this.startOperation();
}
但我必须向此 class 传递参数,例如实体。 是否有可能创建一个 class ,它有一个带参数的函数,在创建对象时立即执行?
或者可能有完全不同的解决方案?
您应该更喜欢使用以实体作为参数的构造函数。
如果我没理解错的话,你想要一个调用带有参数的 DAO 方法的 Callable。
所以你想要这样的东西:
final MyDAO dao = ...;
Callable<Foo> callable = new Callable<>() {
@Override
public Foo call() {
return dao.someMethod(1, 2, 3);
}
};
这称为匿名内部 class,在进行高级、复杂、多线程的工作之前,您绝对应该了解它们。
使用 Java 8,您可以使用 lambda 使事情变得更简单:
MyDAO dao = ...;
Callable<Foo> callable = () -> dao.someMethod(1, 2, 3);