当前位置: 首页 > 工具软件 > Nutz > 使用案例 >

nutz框架学习

丁茂
2023-12-01

                                                           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"}]

    }

};

 

 类似资料: