mybatis sql语句构建器

@Repository
public interface FormMapper {

    //type:要调用的class,method:要调用的方法
    @SelectProvider(type = FromSql.class, method = "getFrom")
    List<Record> getFrom(List<Record> records);

    @Transactional
    @SelectProvider(type = FromSql.class, method = "demo")
    String demo();

    class FromSql {
        public String demo() {
            return new SQL().SELECT(" '.' from dual").toString();
        }

        public String getFrom(final List<Record> records) {
            SQL sql = new SQL();
            String[] strs;
            String applyField, tableName, associationTable, field;
            for (Record r : records) {
                associationTable = r.getStr("table_name");
                if (CommonUtils.isEmpty(associationTable)) {
                    sql.SELECT(r.getStr("table_id" + "." + r.getStr("field")));
                } else {
                    applyField = r.getStr("apply_field");
                    strs = applyField.split(",");
                    if ("true".equals(r.getStr("is_subquery"))) {
                        sql.SELECT(CommonUtils.formatSubquerySql(r.getStr("show_field"), associationTable,
                                r.getStr("store_field"), r.getStr("table_id"), r.getStr("field"), r.getStr("field")));
                        if (!CommonUtils.isEmpty(applyField)) {
                            for (String str : strs) {
                                sql.SELECT(CommonUtils.formatSubquerySql(str, associationTable,
                                        r.getStr("store_field"), r.getStr("table_id"), r.getStr("field"), str));
                            }
                        }
                    } else {
                        sql.SELECT(associationTable + "." + r.getStr("show_field ") + r.getStr("field"));
                        if (!CommonUtils.isEmpty(applyField)) {
                            for (String str : strs) {
                                sql.SELECT(associationTable + "." + str);
                            }
                        }
                        sql.LEFT_OUTER_JOIN(associationTable + " on " + r.getStr("table_id") + "." + r.getStr("field")
                                + " = " + associationTable + "." + r.getStr("store_field"));
                    }

                }
            }
            return sql.toString();
        }

    }
}

SQL api http://www.mybatis.org/mybatis-3/zh/statement-builders.html

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值