nutz框架學習

                                                           Nutz框架學習相關整理

1.簡要介紹

nutz框架源碼開放可以下載它的jar包也可以下載它的源碼改成自己的,這是不同於其它框架的一點點區別,其它區別就自己去發現了這裏不解釋屬於初學也不瞭解,下面是就自己學習自我整理的一點東西,建議看nutz社區或者官方文檔。

2.官網文檔入眼相關

https://nutzam.com/    熟悉nutz核心包    nutzwx(微信公衆號操作封裝庫) 

https://nutz.cn/yvr/t/tdb5l3e7pajv1ptl1f0nveg1bk

RK_CMS 一套CMS系統

NutzWK2.0  基於Nutz的開源企業級開發框架

wzflow -- Nutzwk1.0+工作流

 

nutz入門簡書https://www.jianshu.com/p/8fe4132aca2c?from=groupmessage

 

3.代碼中的部分東西做的筆記部分:

1)主模塊   任何一個類都可以作爲主模塊,需要配置web.xml

 

@Modules  聲明應用的所有子模塊

@Modules({ UserModule.class, PetModule.class})

public class MainModule {}

@IocBy 設置應用所採用的Ioc容器

@SetupBy 應用啓動以及關閉時的額外處理

@Views 自定義的擴展視圖

@Localization 應用的本地化字符串設定

@Ok   成功返回路徑  和structs的成功失敗返回的那個配置類似

@Fail  失敗返回路徑

@IocBy  配置加載器,包括js配置(如數據庫配置)json加載器,註解加載器

 

2)數據庫表操作

dao.create(Person.class,false)//false表示該表存在不刪除(類似hibernate的 create和update配置)

dao.drop(Person.class)//刪除表

插入一條記錄返回id值

dao.insert(person)

插入記錄不返回id

dao.fastInsert(person)

插入一對多

dao.insertWith(t, "student");一方對象t多方Student的list

查一條數據

person p=dao.fetch(Person.class,"張三")  @Name註解

person p=dao.fetch(Person.class,1)@Id註解

dao.update(p) 更新

dao.update(list)更新集合

//查詢全部

dao.query(Person.class, null);

//按照條件查詢

dao.query(Person.class, Cnd.where("age", ">", "18"));

//分頁查詢

Pager page = dao.createPager(2, 10);

dao.query(Person.class, Cnd.where("age", ">", "18"), page);

//刪除一條數據(一般項目中都是邏輯刪除不物理刪除,作爲學習瞭解)

dao.delete(person);//按照對象刪除

dao.delete(Person.class, 1);//按照id刪除

dao.delete(Person.class, "張三");//按照名字刪除

dao.delete(list);//刪除集合

//刪除表中所有數據

dao.clear(Person.class);

//按照條件刪除數據

dao.clear(Person.class, Cnd.where("age", ">", "18"));

 

3)SetUp接口 來實現其項目的初始化 比如做自動根據實體bean創建數據庫表  可從初始化中拿到ioc容器

 

MainMoudle 作爲 配置文件的加載點(類 註解的方式)@Modules註解

AnnotationIocLoader類  註解的加載器和  @IocBy註解結合使用的

表結構自動遷移

(之前已經創建了User表,後在User實體裏新增了屬性,新增屬性需要在數據庫中建字段則可用這波操作)

// 單個遷移

Daos.migration(dao, User.class, true, false, false); // 新增字段true,刪除字段false,檢查索引false

// 批量遷移

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

 

攔截類註解 - @PrevInsert/@PrevUpdate@PrevDelete

與@Prev/@Next不同, 這幾個註解不涉及SQL操作,這是最大的區別!

因爲不涉及到sql操作, 所以不影響批量操作,尤其是批量插入.

先舉個例子,生成uuid,說一下兩者的區別:

@Name

@Prev(els={@EL("uuid()")} // 使用dao.fastInsert(list)會出現name爲null,因爲@Prev不執行

@PrevInsert(@EL("uuid()"} // 使用dao.fastInsert(list)依然正常,@PrevInsert會執行

private String name; // 一個字段上不要同時寫@Prev和@PrevInsert,上述示例只是爲了說明功能

@PrevUpdate(now=true) // 執行update時,自動設置爲當前時間

private Date updateTime;

上述例子中,@PrevInsert可完美替代@Prev, 實現批量插入,而且可以簡寫爲@PrevInsert(uu32=true)

 

4)關於配置文件properties

如何定義一個別名

一個ioc bean,通常只有一個名字, 然而,在某些場景下,需要兩個名稱均指向同一個bean.

例如nutzmore中的插件,均以conf這個名稱取PropertiesProxy的實例,而你的項目中已經定義爲config,而且改起來麻煩, 那這個時候,你就需要按下面的方式,定義一個影子bean了, 間接達到了別名的效果

var ioc = {

    // 原有配置

    config : {

        type : "org.nutz.ioc.impl.PropertiesProxy",

        fields : {

            paths : ["custom/"]

        }

    },

    // 創建別名

    conf : {

        type : "org.nutz.ioc.impl.PropertiesProxy"

        fatcoty : "org.nutz.ioc.Iocs#self",

        args : [{refer:"config"}]

    }

};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章