findById加个where条件怎么重写呢?

我所有的表中 都有isDeleted这个字段,等于1的时候是逻辑删除状态,请问一下 我想把findById自动带上isDeleted=0 这个条件,该怎么重写呢?参数是什么之类的,我写了半天没写出来,请教@JFinal

评论区

JFinal

2017-07-20 14:59

直接用 findFirst("select * from t where ...", ....) 即可

坚强的地瓜

2017-07-20 17:01

@JFinal 那样我每个表都要写一个SQL呢,有没有更简便的方法,每个表都可以直接调此方法?

JFinal

2017-07-20 18:41

做一个 MyModel extends Model,在其中实现自己想要的方法,原先继承 Model 的类改为继承 MyModel 即可

坚强的地瓜

2017-07-21 09:24

@JFinal public Model findById(Class modelClass, Object idValue) {
Table table = TableMapping.me().getTable(modelClass);
String sql = "select * " +
"from " + table.getName() +
" where isDeleted=0 and id=?";
Model model = null;
try {
model = modelClass.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return model.findFirst(sql, idValue);
}
不知道这样写可以吗。我试了试 是可以的

JFinal

2017-07-21 10:25

modelClass 这个参数不需要,因为可以通过 getClass()直接获取

linuxea

2017-07-23 16:54

@坚强的地瓜 @JFinal 也不需要反射实例化出来一个model,直接用当前对象

linuxea

2017-07-23 17:01

public Model findByIdExceptIsDel(Object idVal, String colNameYouWant) {
Table table = TableMapping.me().getTable(getClass());
String sql = "select " + null == colNameYouWant?"*"colNameYouWant + //这里拼凑sql:(
"from " + table.getName() +
" where isDeleted=0 and "+table.getgetPrimaryKey()[0]+"=?"; //这里只判断一个主键的情况
return this.findFirst(sql,idVal);
}@坚强的地瓜 @JFinal

坚强的地瓜

2017-08-24 11:10

@linuxea ok 谢谢!刚看到

热门反馈

扫码入社