NutzDao-自定义SQL语句进行复杂查询
Nutz.Dao提供了大多数简单的操作,在80%以上的情况下,你并不需要编写 SQL,因为 Nutz.Dao会自动替你生成可以使用的SQL。但是,在某些特殊的情况下,尤其是考虑到效率等问题,直接写SQL 仍然是程序员们的一个杀手锏,有了这个杀手锏,程序员们永远可以针对任何数据库做他们想要的任何操作。
自定义SQL语句
NutzDao可以采取直接编写SQL语句的方式来构建自己的SQL语句,从而可以进行对数据的操作,当然在Nutz中自定义SQL语句也支持占位符的方式构建动态SQL语句。在Nutz中创建自定义SQL语句中比较特殊的一种方式是可以将多个SQL语句存放到一个或多个文件中,语句间通过注释来分隔,在程序中想要用该文件中的SQL语句通过相应的方法去加载。
1.普通的自定义SQL语句
在Nutz中通过org.nutz.dao.sql.Sql接口的实现类org.nutz.dao.Sqls来创建自定义SQL语句。代码如下:
Sql sql =Sqls.create("DELETE FROM t_abc WHERE name='Peter'");
2.支持占位符的自定义SQL语句
在Nutz中同样可以通过占位符的方式来构建动态的SQL语句。代码如下:
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表示字段名,用Peter替换,@表示参数占位符
· 还有一个特殊的占位符,$condition,
它的用法如下:
Sql sql= Sqls.create("SELECT name FROM t_pet $condition");
sql.setCondition(Cnd.where("id", ">", 35));