Nov 2, 2017 10:31:32 PM

背景

部署到生产环境的时候需要导入SQL文件,是否觉得很繁琐? 而且还得为不同的数据库准备不同的SQL脚本? 太麻烦了是不是.

如果能自动建表,自动迁移表结构,然后导入初始化数据,是不是部署过程就非常容易了呢?? 想想就有点小激动.

基本用法

首先,你得有一个dao实例, 还有一个Pojo类.

然后它就能很华丽得输出并执行create table语句了.

  1. id INT(32),
  2. passwd VARCHAR(128),
  3. salt VARCHAR(128),
  4. locked BOOLEAN,
  5. ut DATETIME,
  6. PRIMARY KEY (id)
  7. ) ENGINE=InnoDB CHARSET=utf8

批量建表

要是有几十个Pojo,那岂不是要累死? Nutz当然不会让你太累的.

    然后,它就会扫描该package下,所以带注解的Pojo类,逐一执行dao.create

    表结构迁移

    老板说要每个用户新增加个phone字段,咋搞? 自定义SQL执行一条ALTER吗? 不不不,自动迁移一下表结构就好了.

    第一个参数是类,第二个参数是否新增字段,第三个参数是否删除字段(通常为false),第4个参数是否检查索引(通常为false).

    额,那很多很多pojo呢? 也能批量迁移吗? 可以的

    1. Daos.migration(dao, "net.wendal.nutzbook.bean", true, false, false);

    自动建表的字段配置

    建表时的详细配置,大部分通过@ColDefine实现

    定义字符串长度,例如1024,你懂的

    1. private String name;

    不允许为null

    1. @ColDefine(notNull=true, width=128)
    2. private String nickname;

    自定义类型,终极大招,没法自适应数据库了.

    1. @ColDefine(customType="LargeBlob", type=ColType.BLOB)
    2. private Blob blob;

    自动建表的索引配置

    除了为@Id//@Pk建立自动索引之外, 通过注解可以配置更多自定义索引.

    例如为name和age建立联合索引

    自1.r.63起,索引的名称可以自动帮你生成,上面的例子,如果name不填的话,默认"IXTableName_name_age",及"前缀表名字段名"其中,唯一索引前缀为"UX",非唯一索引前缀为"IX_"

    本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和下修改和再使用。