一、背景
sql表 -> animal
id name type age
1 白胖 cat 12
2 泰哥 cat 10
3 大G dog 9
4 墨宝 sheep 6
二、问题
假如有个mapper方法,很明确的要从这张表里获取所有关于type=cat的数据,queryCatFromXXX();
那么sql语句那里应该带上条件 type=cat -> select * from animal where type="cat";
此时 cat这个内容是写死在sql好些(硬编码),还是在service或者controller一路传到mapper对应的sql好些?
我理解如果是方法比较明确是用来查询cat相关的数据,那直接写死在sql比较方便些吧?
请大神指教,谢谢
推荐在 Mapper 中方法做成传 type 参数获取数据。
在 Service 层再去考虑要不要做成更灵活的方法,要不要做成灵活的方法取决于方法复杂度。
需要更灵活的方法:
比如题主业务场景只是单纯根据 一个类型参数来获取数据,则没有必要 硬编码 只获取 cat 数据。完全可以在 Service 层做一个根据类型枚举来获取数据方法。这样指定了参数可选值,也利于调用者清楚需要怎么做。
Controller 直接调用方法传 cat 值枚举即可。
不需要更灵活的方法:
比如现在有一个转移动物需求,需求是 年龄大于 3 岁且小于 10 岁的 cat 类型动物。这样就可以做一个获取转移动物数据方法。方法内部实现了条件筛查。而转移功能只需调用方法即可获取需要转移动物的数据。这样就很清晰了。