java代码规范不允许使用魔法值,那么对于mysql查询中的字段名怎么处理

java编程规范中不允许使用魔法值,那么对于mysql,es查询,是对每个查询条件,查询结果都定义一个po对象吗,还是怎么处理。

如果每个查询结果都定义一个对象,会不会造成对象非常多。
如果不定义po对象,使用map获取返回结果,在取得时候又会在代码里留下魔法值。

例如:
select sum(money) as sum_money,count(id) as order_num from orders
例如上面的sql查询,我如果返回map的话,我只能使用map.get("sum_money")取出结果,这里sum_money就是硬编码的魔法值了

阅读 238
评论
    4 个回答
    • 3.4k

    不明白,为何使用map获取查询结果就会出现魔法值?你的意思是,数据库有某些字段的值是0表示什么,1表示什么之类的吗?这种字段可以认为其值为枚举类型。

    你可以在java中定义各种枚举类型,然后用枚举类型和map中的数据进行比较,就可以避免魔法值。

      没明白你的意思,是说没用 ORM 的情况下吗?

        • 3.6k
            System.out.println("Hello"); // 这是魔法值
            String msg = "Hello;
            System.out.println(msg); // 这不是

        数据库查询通常都是要对应到pojo的,比如一表一类,一模型一类
        除非有其他更符合场景的方式

          是的,一般ORM框架都会映射成实体类。

          所以会造成实体类过多的情况。

          用Map的话非常不友好,因为你不知道map里面有什么。

            撰写回答

            登录后参与交流、获取后续更新提醒