虽然提供了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 name=@name");
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 name=@name WHERE id=@id
在你的 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);...}

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

转载于:https://www.cnblogs.com/telwanggs/p/7111606.html

nutz 自定义sql的使用相关推荐

  1. Nutz自定义SQL

    Nutz自定义SQL 创建SQL对象 用户可以硬编码 SQL 语句,比如 Sql sql = Sqls.create("DELETE FROM t_abc WHERE name='Peter ...

  2. Mybatis Plus——以XML方式使用 Wrapper 自定义SQL时IDEA错误[**expected, got ‘${‘]解决方案

    问题描述 '(', ',', CROSS, FOR, GROUP, HAVING, INNER, INTO, JOIN, LEFT, LIMIT, LOCK, NATURAL, ORDER, PROC ...

  3. 自定义报错返回_MybatisPlus基础篇学习笔记(五)------自定义sql及分页查询

    本章目录 自定义sql 分页查询 1. 自定义sql 在dao文件中编写自定义接口,并在方法上使用注解形式注入SQL,如图所示: 第一种: 第二种 ① application.yml加入下面配置 my ...

  4. Mybaits自定义SQL

    最近有个同事要包装一个可以执行sql语句的功能用的是mybatis 最开始他想到的方案是拿到数据库连接再执行sql语句. 后来出了某些错误来问我,为了寻求比较快的解决方法于是我就试试了下下面的方法. ...

  5. 工作流实战_27_flowable 自定义sql查询

    项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 业务场景:在实际开发中,由于我们需要一些flowable的个性化查询,而且他们提供的ap ...

  6. 【JEECG技术文档】数据权限自定义SQL表达式用法说明

    1. 数据权限自定义SQL支持表达式 功能介绍 数据规则通过配置自定义sql来实现数据权限的控制,自定义SQL支持表达式取值 其中自定义sql 条件中字段的名称和数据库表的字段名保持一致. 角色授权 ...

  7. SpringBoot集成MyBatis-Plus自定义SQL

    1.说明 本文介绍Spring Boot集成MyBatis-Plus框架后, 基于已经创建好的Spring Boot工程, 添加自定义的SQL实现复杂查询等操作. 自定义SQL主要有两种方式, 一种是 ...

  8. sql数据库 订阅发布_如何使用中央发布者和多个订阅者数据库设置自定义SQL Server事务复制

    sql数据库 订阅发布 In this article, you'll learn how to setup a simple, custom distributed database replica ...

  9. 如何创建和自定义SQL Server模板

    SQL Server Templates are SQL scripts, containing SQL code, frequently used by developers and DBAs in ...

最新文章

  1. Flink升级到1.4版本遇到的坑
  2. python常用知识点总结-python 类知识点总结
  3. python图书馆管理系统实验报告_基于Python的图书馆业务报表自动生成研究
  4. 困扰我多年的Java泛型〈? extends T 〉和 〈? super T 〉,终于搞清楚了!
  5. JSON总结(java篇)
  6. 详解spark任务提交至yarn的集群和客户端模式
  7. Non-local Neural Networks:非局部神经网络
  8. Asp.net MVC 4新项目中创建area的后续操作
  9. Sharepoin学习笔记—架构系列--05 Sharepoint的四种执行模型 2
  10. Select和epoll的区别
  11. matplotlib.pyplot
  12. 自己眼中的淡定生活!
  13. POJ2931不平等博弈
  14. Linux学习笔记(用户管理)
  15. 在Windos上安装Nginx
  16. 高等数学(第七版)同济大学 习题2-1 个人解答
  17. Diy-Scratch(4) 大家来找茬
  18. 计算机中丢失Smtpemail,SMTP和ESMTP错误代码列表
  19. 受保护的Hyper-V环境和受保护的虚拟机
  20. 电脑小白必备的52个专业术语,有必要了解一下!

热门文章

  1. (96)分频器设计(任意分频器)
  2. (1)FPGA介绍(第1天)
  3. (33)FPGA面试题附加约束的作用
  4. matplotlib绘制虚线_[Matplotlib习题]虚线绘图练习
  5. 什么是分布式_什么是分布式系统,如何学习分布式系统?
  6. 安装Samba服务器
  7. Linux uart驱动框架
  8. Linux的capability深入分析(1)
  9. mini2440驱动分析之触摸屏
  10. 一文带你入门C++,类与对象、6个默认成员函数、this指针以及static关键字。