升级到3.1了,马上试用,发现了问题。只能还原3.0.
3.1更新日志:
8:Model.getSql() 方法去除内部对 this.attrs 值的传递,避免对于dao对象的误用
不是很理解上面的方法,我觉得可以兼容上面的方法,不要取消,否则改动太大。而且发现个问题:
比如DB.update()方法,他只能传数组参数。而我在外部sql文件是如下写的:
#sql("deleteRMPByRoleIdByBatch")
delete from role_menu_permission where roleId in
(
#for(roleId:roleIds)
#(for.index>0?",":"")#(roleId)
#end
)
#end
roleId以前是通过Map参数传进来的,现在就无法写了。
当然升级后短短试用发现分页功能加强了很好。
SqlPara sqlPara = Model.getSqlPara(key, this);
在查询的时候这样:
model.find(sqlPara);
所以升级的改动其实很小,而且必然可以升级,就是添加一个 this 参,然后 String 接收参数改为 SqlPara 接收参数,查询时直接扔 SqlPara 对象进去
而老版本 3.0 得到的是一个 String 型的 sql,在查询的时候这样仍然要传入参数:
model.find(sql, p1, p2, ..., pn);
可见老版本的用法并不比新版本简洁,新版本的 getSqlPara 方法功能还更加灵活强大,见下面的说明
新版本的用法有如下好处:
1:避免了 find(sql, p1, p2, ..., pn) 时传参,而是直接在 getSqlPara 时传参,因为在 getSqlPara 时传参功能更加灵活与强大,例如支持 #para(int) 的用法
2:避免了 dao 对象的线程安全问题
3:避免 Model、Db 中的 getSql(...) 系列方法数量的膨胀
4:还有其它一些好处,刚刚被一些事情打断,一时忘记了