美文网首页
jOOQ笔记

jOOQ笔记

作者: firefly_ | 来源:发表于2019-04-23 11:02 被阅读0次
    // jOOQ临时表
    Table temp = DSL.table(DSL.select(BS_SALESMAN.SALESID, DSL.count().as("count"))
                    .from(Tables.BS_SALESMAN)
                    .where(BS_SALESMAN.SALESID.eq(1))
                    .groupBy(BS_SALESMAN.MOBILE))
                    .as("temp");
    // 或者使用val
    val user = BS_USER.as("user");
    
    // 去重查询
    DSL.selectDistinct().from();
    
    // 创建字段
    Field<String> field = DSL.field("hello world");
    
    // 创建一个常量值
    Param<String> helloWorld = DSL.val("hello world");
    
    // 获取表记录对象
    Table<Record> table = DSL.table("bs_user");
    
    // 为真的条件:1=1
    Condition condition = DSL.trueCondition();
    
    // 验证DSL.exists()方法
    public void exits() throws IOException, SQLException {
            DSLContext dslContext = getdslContext();
            Condition condition = DSL.exists(DSL.select(DSL.field("c_username")));
            Table<Record> table = DSL.table("t_login");
            SelectQuery<Record> selectQuery = dslContext.selectQuery(table);
            selectQuery.addConditions(condition);
            Result<Record> fetch = selectQuery.fetch();
            for (Object aResult : fetch) {
                Record record = (Record) aResult;
                System.out.println(record);
                System.out.println(record.getValue("c_username"));
            }
    }
    
    // jOOQ强制索引
    DSL.select().from(BS_USER.forceIndex("idx_userid")).where(BS_USER.USERID.eq(1));
    
    // 日期格式化
    /**
     * 时间字段转字符串
     *
     * @param field  时间类字段
     * @param format 抓换格式
     * @return 字符型字段
     */
     public static Field<String> dateFormat(Field<?> field, String format) {
        return DSL.field("date_format({0}, {1})", SQLDataType.VARCHAR,
                field, DSL.inline(format));
     }
    
    /**
     * 字符串转时间戳字段
     *
     * @param time   时间
     * @param format 格式
     * @return 时间戳字段
     */
    public static Field<Timestamp> stringFormat(String time, String format) {
        return DSL.field("date_format({0}, {1})", SQLDataType.TIMESTAMP,
                time, DSL.inline(format));
    }
    
    // dao查询
    DSL.select(dateFormat(BS_USER.CREATETM, "%d/%m/%Y").as("createtm"),DSL.COUNT())
       .from(BS_USER)
       .groupBy(dateFormat(BS_USER.CREATETM, "%d/%m/%Y"))
       .fetch();
    
    // case when
    DSL.when(US_USER.AGE.lessOrEqual(18), "未成年").otherwise("成年").as("年龄阶段"),
    
    // 联合主键更新
    dao.execute(e -> e.insertInto(BS_USER).columns(BS_USER.GROUP_ID
                    , BS_USER.USERNAME
                    , BS_USER.USERNICKNAME
                    , BS_USER.AGE
                    , BS_USER.SEX)
                    .values(1, "张三", "wind", "23", 1)
            ).onDuplicateKeyUpdate()
           .set(BS_USER.LEVEL, 3)
           // 注意,这里还需调用execute方法才会真正执行
           .execute()
    );
    

    相关文章

      网友评论

          本文标题:jOOQ笔记

          本文链接:https://www.haomeiwen.com/subject/rxsaxqtx.html