一、需求背景
- 项目中有一些基础数据,以国家为例,字段有国家代码、国家名称、国家面积等等信息。
- 在项目中其他位置需要验证并使用国家数据,比如商品每次批量保存时,只能拿到国家的编码,你需要校验国家是否合法,并把国家的名称面积等字段放到商品表(案例可能不恰当,为了表达业务场景)
二、遇到的问题
- 在商品导入时,在商品信息for循环中每次用国家编码查询国家数据验证并赋值给商品,在循环中查询数据库显然是不明智的选择
- 在商品导入之前,查询出所有国家信息,在商品信息for循环中嵌套国家的for,逐一比对国家编码信息,但代码不美观,效率低下
三、解决问题
- 将国家信息组成一个map,key为国家编码,value为国家实体的所有信息,这样就可以使用的时候通过key直接get到数据,这样写起来不仅美观并且效率高
- 代码如下,这样写完就可以得到想要的数据了
Map<String, CountryInfo> map = SimpleQuery.keyMap(null, ountryInfo::getDomesticShipperCode);
- 此外SimpleQuery中还有map、group等好用的方法,可以将查询到的数据进行分组等操作