关于model的getSqlPara方法的问题

问题描述:

当_MappingKit未映射model与数据库表关系时,无法使用model的getSqlPara系列方法,无法找到在sql模板中定义的sql。


问题过程:

今天从一个老项目拷贝复制了一个新的项目,先清理了原有不需要的代码,然后在调试部分代码访问数据库时,报了空指针异常,一直找不到原因,检查了setSourceFactory、文件编译目录文件是否正确等,最终发现是_MappingKit未映射model与数据库表关系,在sql模板中定义的sql无法通过model的getSqlPara获取到。


问题代码误区:

在model中使用了DB类返回Recode对象,但是使用了model的getSqlPara方法获取的sql定义,没有使用DB类的getSqlPara获取sql定义。


问题建议:

由于sql定义本身无法重复定义,也未跟model有强制的关联关系,所以普通人想当然的会认为model的getSqlPara方法与DB类的getSqlPara方法都是从sql定义中获取sql,第一想到的是sql定义的路径、文件等出现错误,容易产生误解,虽然说这种使用方法本身并不规范,但是还是建议能在model未映射时,getSqlPara能正常工作,增加健壮性。





评论区

jounzhang

2020-01-19 17:29

JFinal

2020-01-20 16:31

getSqlPara 与数据源有关联,而数据源与 model 有关联,不太好处理这个问题

这个问题应该只会出现在极个别场景,况且没有映射 model 的情况应该使用 Db.template 或者 Db.getSqlPara

jounzhang

2020-02-28 09:51

@JFinal getSqlPara与数据源有关?我以为只是跟sql模板有关

热门反馈

扫码入社