content: package com.sohu.cache.dao;
  
  import com.sohu.cache.entity.InstanceInfo;
  
  import org.apache.ibatis.annotations.Param;
  
  import java.util.List;
  import java.util.Map;
  
  /**
   * 基于instance的dao操作
   * <p/>
   * User: lingguo
   * Date: 14-6-3
   * Time: 下午3:58
   */
  public interface InstanceDao {
      /**
       * 通过type查询实例列表
       *
       * @param type
       * @return
       */
      public List<InstanceInfo> getInstListByType(@Param("type") int type);
  
      /**
       * 查询appId下的所有instance
       *
       * @param appId
       * @return
       */
      public List<InstanceInfo> getInstListByAppId(@Param("appId") long appId);
  
      /**
       * 通过host和port查询一个实例信息
       *
       * @param ip
       * @param port
       * @return
       */
      public InstanceInfo getInstByIpAndPort(@Param("ip") String ip, @Param("port") int port);
  
      /**
       * 通过host和port查询一个实例信息
       *
       * @param ip
       * @param port
       * @return
       */
      public InstanceInfo getAllInstByIpAndPort(@Param("ip") String ip, @Param("port") int port);
  
      /**
       * 通过所有实例列表(包括:0:节点异常,1:正常启用)
       *
       * @return
       */
      public List<InstanceInfo> getAllInsts();
  
      /**
       * 通过host和port查询一个实例信息
       *
       * @param ip
       * @param port
       * @return
       */
      public int getCountByIpAndPort(@Param("ip") String ip, @Param("port") int port);
  
      /**
       * 保存一个实例
       *
       * @param instanceInfo
       */
      public void saveInstance(InstanceInfo instanceInfo);
  
      /**
       * 根据ip和type查询实例数量
       *
       * @param ip
       * @param type
       * @return
       */
      public int getInstanceTypeCount(@Param("ip") String ip, @Param("type") int type);
  
  
      public InstanceInfo getInstanceInfoById(@Param("id") long id);
  
      public int getMemoryByHost(String host);
  
      public int update(InstanceInfo instanceInfo);
  
      /**
       * 获取一台机器的所有实例
       * @param ip
       * @return
       */
      public List<InstanceInfo> getInstListByIp(@Param("ip") String ip);
      
      
      /**
       * 机器实例数map
       * @return
       */
      public List<Map<String, Object>> getMachineInstanceCountMap();
      
  
  }