获得Model对应的表名

为了尽可能提高开发效率,按照自己的习惯写代码,进一步封装常见的sql查询,遇到1个问题.

举一个例子

通用的根据id删除方法(JFinal的deleteById是物理删除,不可取,delete非常慎重)


public boolean deleteById(Model model,Object id){

String tableName = getTableName(model);

Record record=Db.findById(tableName, id);

if(record==null){

return false;

}

String sql="update "+tableName+" set yn = ? where id = ?";

int affactedRows=Db.update(sql,YnEnum.YES.getCode());

return affactedRows == 1;

}

public String getTableName(Model model){

return model._getTable().getName();

}

但是Model的_getTable()是protected,作用域 小了额.


还比如,常见的count返回1个Long

select count(*) from table_name where...

还是需要获得model的表名.

只能直接传入 表名了吗?


评论区

fansunion

2018-09-07 17:01

有个相关的问题: select count(*), 还是用find方法获得 count值吗?

fansunion

2018-09-07 17:04

@fansunion Db.query(config, conn, totalRowSql, paras); totalRow = (size > 0) ? ((Number)result.get(0)).longValue() : 0;

JFinal

2018-09-07 17:09

@fansunion _getTable 作用域小了没关系,很多解决办法,下面的办法任选其一:
1:TableMapping.me().getTable(modelClass);

2:通过引入一个 CommonModel extends Model,然后覆盖父类的 _getTable() 方法,将其改为 public 方法即可

fansunion

2018-09-07 17:22

理解了.
第2种方法不是太方便.
public class Brand extends BaseBrand
BaseBrand extends Model

代码自动生成,Java只能单个继承,
自己的类 Brand不方便再 继承 自定义的 CommonModel方法.

JFinal

2018-09-07 18:04

@fansunion 下一版 jfinal 3. 5 打算将这个 _getTable() 放开为 public

fansunion

2018-09-07 18:11

封装了4个通用方法,666.
List idList=Arrays.asList(1,2,3);
List brandList=JtnDbKit.findByIdList(idList, Brand.class);

JtnDbKit.deleteByIdList(idList, Brand.class);
int count=JtnDbKit.countBy("select count(*)from brand where yn=?",1);
System.out.println(count);
Map barndMap=JtnDbKit.findByIdListMap(idList, Brand.class);
System.out.println(barndMap);

fansunion

2018-09-07 19:59

JFinal

2018-09-08 12:11

@fansunion 封装的代码都分享出来啊 http://jfinal.com/share

fansunion

2018-09-08 18:36

@JFinal 嘎嘎嘎。我正在全面梳理总结我的代码库,分成了 jtn-common,jtn-web,jtn-jfinal等,包名用的某个公司名,担心暴露了。正在积累自己的资产,今后在JFinal的基础上,再提高效率,极速开发。小程序、vue等都在整合中。今后单干,在不断 积累技术库的基础上,重点做业务,搞市场,才能赚钱。 暂时不分享了,好像讨论的也不多。 过段时间在分享,最近各种问题,目前都搞定了。刚刚搞定了 vue ivew分页,自己js那一套 太丑了点。

JFinal

2018-09-08 20:48

@fansunion 做个自己的产品出来,不断打磨,获取用户,根据用户反馈不断进化

热门反馈

扫码入社