知识卡片

命名参数与命名查询的价值

专业/工作 · 225

内容

用带名字的占位符(如:length)代替位置占位符(如?)表达查询参数,本质上是给参数赋 予自解释性:读代码时不用去数第几个问号对应第几个setter调用,也就消除了”数错顺序”这类 低级错误,还能让同一个参数在查询里被复用多次。更进一步,把整段查询语句从Java代码中抽 出、独立命名后集中存放(如放进映射文件),能把”查询逻辑”和”调用查询的业务代码”两个关 注点物理分离——查询语句不再是夹杂大量转义符号的长字符串拼接,改起来也不用小心翼翼挪 动换行位置。发散:这其实是”用名字替代位置”这一通用可读性原则在查询构造场景的应用,和 函数调用中”具名参数优于位置参数”是同一个道理。

参考来源

《精通Hibernate》第3章《建立查询的更好方法》