玩命加载中🤣🤣🤣

nutz.dao笔记整理


基础封装

封装单个对象查询

// 1.获取dao
Dao dao = new NutDao(dataSource);  // 伪代码
Sql sql = Sqls.create("select * from tb_user").setParam("name", "小明");  // 伪代码
// 2.使用nutz自带的reocrd对象
sql.setCallback(Sqls.callback.record())
// 3.实体设置
sql.setEntity(dao.getEntity(Record.class));  // 可自定义实体
// 4.执行sql
dao.execute(sql);
// 5.接收对象
Record record = sql.getObject(Record.class); // 此处是接收单个对象

封装结合对象查询

sql.setCallback(Sqls.callback.records())
sql.setEntity(dao.getEntity(Record.class)));  // 可自定义实体
dao.execute(sql);
List<Record> records = sql.getList(Record.class);

封装数字查询

sql.setCallback(Sqls.callback.integer());
dao.execute(sql);
int count = sql.getInt();

封装DDL

sql.setCallback(Sqls.callback.integer());
dao.execute(sql);
int rows = sql.getUpdateCount();

condition花式用法

首先创建sql对象(注意此处的占位符是$)

select * from tb_xxx $condition

Cnd.exps();  // 将一个条件表达式封装为条件表达式组
Cnd.where();  // 将一个表达式封装成一个Cnd实例
// 通过以上两个方法组合搭配形成嵌套, 如:
Cnd cnd = Cnd.where("name", "=", "张三")
        .and("age", "between", new Object[]{19, 29})
        .and(
                Cnd.NEW().where()
                        .andIn("city", "上海", "广东")
                        .orIn("hobby", "篮球", "网球")
        )
        .and(
                Cnd
                        // 生成条件组(后可继续拼接)
                        .exps("gender", "=", "女")
                        // 动态条件
                        .andEX("height", "like", "180")
                        .andEX("phone", "=", "")
        )
        // 静态条件,直接拼入sql,不做任何转义
        .and(new Static("isnull(is_delete)"));

生成后的sql

WHERE name='张三' 
AND age BETWEEN 19 AND 29 
AND (city IN ('上海','广东') OR hobby IN ('篮球','网球')) 
AND (gender='女' AND height LIKE '180') 
AND  isnull(is_delete) 

like左右模糊

// Cnd.NEW().where().andLike();
SimpleCriteria cri = Cnd.cri();
cri.where().andLike("name", "李四", false);
// 建议传ignoreCase = false, 否则会被拼接成 LOWER(XXX) LIKE LOWER('%XXX%')
cri.where().andLike("idcard", "330");
// 右侧模糊查询
cri.where().andLike("hobby", "运动", "", "%", false);

生成后的sql

WHERE name LIKE '%李四%' AND LOWER(idcard) LIKE LOWER('%330%') AND hobby LIKE '运动%'

实体动态更新

由于nutz.dao默认update操作是全字段更新, 如果只更新实体类不为空的需要设置字段过滤器

dao.update(
    new User().setIsDel(1), 
    FieldFilter.create(User.class,true),
    Cnd.where("is_del","=",0)
);

文章作者: 👑Dee👑
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 👑Dee👑 !
  目录