dao 拦截器怎么忽略字段 nutz

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dao 拦截器怎么忽略字段 nutz相关的知识,希望对你有一定的参考价值。

参考技术A 开始学习框架思想了,打算先从nutz入手,因为nutz是国人写的,中文注释,容易理解而且nutz框架比较小,但是麻雀虽小五脏俱全,大牛的思想还是可以学到的.1、这个是log的包信息,基本上有了一个大题的介绍2.接口publicinterfaceLog五个级别trac本回答被提问者采纳

nutz 自定义sql的使用

虽然提供了Cnd,但是用起来是觉得有点不方便,然后就直接编写Sql语句。nutz提供了一些方法。

Nutz.Dao 的自定义 SQL 部分的解决方案是:

// 不推荐使用 用户可以硬编码 SQL 语句,比如: Sql sql = Sqls.create("DELETE FROM t_abc WHERE name=‘Peter‘");

// 可以。防注入。不过太多字符串了,要拼接。 支持占位符的书写方式,比如: Sql sql = Sqls.create("DELETE FROM $table WHERE [email protected]"); sql.vars().set("table","t_abc"); sql.params().set("name","Peter"); $table 将会被替换成 t_abc @name 将会被替换成 ?,用来创建 PreparedStatement

// 这种方法不错,代码显得好看点,而且,方便CV操作 用户可以将所有的 SQL 语句存放在一个或者多个文件中,语句的间隔可以通过注释,比如: /* delete.data */ DELETE FROM $table WHERE name LIKE @name /* update.data */ UPDATE FROM $table SET [email protected] WHERE [email protected] 在你的 Java 代码中: Sql sql = dao.sqls().create("delete.data"); 你可以为你的 SQL 任意定制回调,后面会有详细讲解

 

根据nutz的文档,最终主要采用将sql语句放置在多个文件中来管理的方法比较容易管理代码。

使用方法如下,初始化时,让dao载入.sqls文件。有两种方法。

  第一种,构造时加载。路径你也可以用文件夹,这样会加载文件夹下所有.sqls文件

Dao dao = new NutDao(datasource,new FileSqlManager("demo/sqls/all.sqls"));
System.out.println(dao.sqls().count());

 或者在dao.js写好,用ioc加载

var ioc = {
        conf : {
            ...
        },
        dataSource : {
            ...
        },
        sqlSource:{
            type:"org.nutz.dao.impl.FileSqlManager",
            args:["sql"]
        },
        dao : {
            type : "org.nutz.dao.impl.NutDao",
            args : [{refer:"dataSource"},{refer:"sqlSource"}]
        }
};

  第二种,在构造后加载

Dao dao = new NutDao(datasource);
((NutDao)dao).setSqlManager(new FileSqlManager("demo/sqls/all.sqls"));
System.out.println(dao.sqls().count());

PS:.sqls 文件必须是 UTF-8编码
------------------------------------------------------------------------------------------------------------------------------------------------------------------------

好了,前期工作完成。该弄弄怎么使用了。首先,写好你自己的.sqls文件。

1.通过 dao.sqls().create(""); 加载对应的sql语句。

2.替换相应的占位符。

3.设置回调函数,回调函数中,通过 invoke 函数你进行后续操作。

4.执行dao.execute(sql)。这里是同步,会等待结束,直至失败,或者回调函数执行完毕才会继续执行。

@At
    @Ok("jsp:jsp.test.getMenuDi")
    public void getMenuByIoc(HttpSession session)
    {
        Sql sql = dao.sqls().create("getMenu.data");
        
        sql.params().set("id", 1);
        
        sql.setCallback(new SqlCallback() {
            public Object invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException {
                .....
                
                while (rs.next()){
                    ....
                    m.setName(rs.getString("menu_name"));
                    ....
                }
                System.out.println("callback end");
                return myMenu;
            }
        });
        
        dao.execute(sql);
        System.out.println("execute end");
        
        MyMenu myMenu = sql.getObject(MyMenu.class);
        
        ...
    }

然后,就可以开始继续写代码了。

 







以上是关于dao 拦截器怎么忽略字段 nutz的主要内容,如果未能解决你的问题,请参考以下文章

注入 DAO 的 @Transactional 的 Spring WS 拦截器不起作用

java怎么拦截mapper方法

springmvc的拦截器,怎么设置不拦截的url

单元测试怎么注入service

Nutz框架的优点

缓存拦截器调用被忽略