zoukankan      html  css  js  c++  java
  • 调研打标(标签)的实现方式(mybatis转换json的方式)

    • mysql 存json,可行,

      • 建议存储标签格式为jsonArray

      • 最终实现为流过滤,代码实现举例

        • create table ep_test_json
          (
              id    int auto_increment
                  primary key,
              extra json null
          );
          INSERT INTO epower_atreus.ep_test_json (id, extra) VALUES (1, '[1, 2, 3, 4, 5, 6, 7]');
          INSERT INTO epower_atreus.ep_test_json (id, extra) VALUES (3, '[1, 2, 3, 4, 5, 6]');
          INSERT INTO epower_atreus.ep_test_json (id, extra) VALUES (5, '[1, 2, 3, 4, 5]');
          
        • @Data
          @EqualsAndHashCode(callSuper = false)
          @TableName(value = "epower_atreus.ep_test_json", autoResultMap = true)
          public class EpTestJson implements Serializable {
          
              @TableId(value = "id", type = IdType.AUTO)
              private Integer id;
          
              @TableField(typeHandler = FastjsonTypeHandler.class)
              private List<Integer> extra;
          
          
          }
          
        • final List<EpTestJson> list = jsonService.list().stream()
                          .filter(json -> json.getExtra().stream().anyMatch(i -> i == 7))
                          .collect(Collectors.toList());
          
      • 缺点是无法做索引,只能先查出全部数据然后逐一匹配; 且无法做常规分页

    • 关联表,可行,

      • 增加索引,
      • 缺点是会多占用一定的空间,可优化点是,在标签表增加主表的主键,这样仅需标签表设置索引列
    • 位移打标,可行,

      • 比如, 01010101,01000001,每个固定位置的1代表固定的标签,只要约定好位置信息,一个Int就足够存储标签了
      • 缺点是在数据库里对比数据时不方便比对
    三分热血值得你十二分努力。
  • 相关阅读:
    Java重命名文件
    三星Samsung 4.4.2该负责人制度,简化名单
    hdu 1203 I NEED A OFFER!
    springMVC整合JAXB
    主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思
    Objective-C路成魔【18-复制对象】
    QStyleFactory类参考
    QT QSqlQuery QSqlQueryModel
    linux mysql 卸载后重装
    更改Mysql数据库存储位置的具体步骤
  • 原文地址:https://www.cnblogs.com/woooodlin/p/tagging_for_something.html
Copyright © 2011-2022 走看看