您的位置:首页 > 其它

Nutz Dao实体中索引注解的使用(@TableIndexes@Index)

2014-06-12 18:02 232 查看
Nutz是一组轻便小型的框架的集合, 各个部分可以被独立使用,把SSH的精华封装在一个1M左右的jar包中,Nutz不对其他任何第三方库产生依赖,如果不考虑数据库链接和日志的话,创建完美的Web应用只需要一个Nutz的jar包。

作为产品而言,就算是再优秀,如果没有优良的使用文档,也是白搭。这也是Nutz的优势所在,很少见到文档像Nutz这样详细的开源框架。

总之,小菜认为Nutz乃国产良心精品。

但是,Nutz 再怎么好,也是个人维护的开源框架,总会遇到种种问题。

今天小菜在实体索引注解方面遇到了点问题,啥问题呢:根本不知道索引注解怎么用。。。

但令小菜意外的是,整个度娘和谷歌,竟然搜不到一丁点答案,官方也没有说明。。。

最后还是在GitHub里找到了点线索,现在把使用方法共享一下!

假设有如下实体:

@TableIndexes({@Index(name="idx_user_record_user_id",fields={"userId"},unique=false),
@Index(name="index_name",fields={"fieldName1","fieldName2"},unique=false)})


View Code

@Index注解中具体参数说明如下:

name 索引名称。由于索引是全局的,为了避免冲突,名称中建议加上表名。

fields 索引属性集合,也就是说在哪些属性上创建索引。因为索引不仅仅可以加在一个字段上,加在多个字段上叫联合索引。注意,小菜一直在强调属性,fields中的值是实体属性名称,而不是数据库表中的字段名称。

unique 是否是唯一索引。索引大致有三种类型:普通索引、唯一索引、全文索引。普通索引没得说,就是简单的加一个索引,unique=false就是普通索引;唯一索引就是在普通索引的基础上加了一个唯一性约束,保证该字段不重复,unique=true就是唯一索引;全文索引比较复杂,一个表只能建一个,针对超长字符串搜索优化,Nutz不支持,一般也用不到,小菜就不多说啦!

文末,小菜再多说点联合索引的知识。

我们经常会用到这样的SQL语句:

SELECT * FROM T_TABLE WHERE FIELD1=? AND FIELD2=? AND FIELD3=?


如果这样的查询非常频繁,数据量又比较大,我们就得考虑在FIELD1、FIELD2、FIELD3上加索引,但是一下子加三个单独的索引很浪费,所以可以在FIELD1、FIELD2、FIELD3上加一个联合索引。

另外,在加联合索引时,如果某个字段被单独查询的概率比较大,那么要把这个字段靠前。就拿刚刚的例子说,如果FIELD2会经常被单独查询,那么就按照FIELD2、FIELD1、FIELD3的顺序加联合索引。

本来挺简单的一件事,小菜说了这么多,文章到此结束,祝读者学习顺利!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: