转载

java代码小tips总结

最近写java代码学到的一些point,主要是我在公司实习的时候,自己碰到的一些问题,总结一下。会持续更新。

1.解决dao层频繁访问数据库问题

问题:平常写java的都经常会有功能点:service.getElementByID(id),以前我在写的时候,比如从前端接收到对象的list-》根据list中某个对象的id查询数据库的某张表的其他属性name-》第一反应是直接for循环遍历获取对象id,然后根据id调用service中的getnameByID方法。

这个做法实际上是可以的,但是如果数据量很大的情况下,多次访问数据库IO消耗巨大。

复制代码

解决:先select * from 数据中的某张表A,获取全部需要的数据,然后把你需要查找的一列name与ID一一对应存入map。然后for循环list中的id时,直接从map中查找。这样操作的话就相当于只访问了一次数据库。同时因为map的get操作的时间复杂度在理想的情况下为O(1)。

代码:

//定义map list为一次从数据库获取所有数据
    Map<String,Object> map = new HashMap<>();
    List<Object> lists = service.findAll();
    if(lists!=null && !lists.isEmpty()){
        //将list中所有数据存入map
        lists.forEach(bean->{
            map.put(bean.getID(),bean);
        });
    }
    //在操作的时候,如果map中存在对应的key,直接get
   if(map.containsKey(bean.getID()) ){
          System.out.println(bean.getName());          
    }


复制代码
原文  https://juejin.im/post/5db8fb1ae51d452a2b727bfe
正文到此结束
Loading...