query.js 查询示例

目录

一. Query使用示例

1. 通过单个字段查询,model默认为“LK”,模糊查询,如果model值为EQ表示精确查询

2. 通过两个字段AND查询

3. 通过两个字段OR查询(三种方式)

4. 通过IN查询

5. 排序查询

6. 分页查询

7. 过滤查询字段

8.复杂查询

9.左(右)连表查询,ON后面添加过滤条件

10.query.js代码


一. Query使用示例

    Query页面测试可在“系统工具-Query”页面上进行使用测试,下面列举了常用的几种查询使用示例。

1. 通过单个字段查询,model默认为“LK”,模糊查询,如果model值为EQ表示精确查询

2. 通过两个字段AND查询

3. 通过两个字段OR查询(三种方式)

第一种方式,如果是username = ? or mob = ?,且seq不设置排序,那么必须是顺序添加;如果设置了seq,那么可以不按顺序添加

第二种方式,通过第二个type进行OR查询,内部实现原理不一样,后面复杂查询可以会进行区分

 

第三种方式,每个字段之间通过分隔符(",")或者("__")进行分割,这边也展示了name设值之后sql的变化

4. 通过IN查询

5. 排序查询

type默认为ASC

6. 分页查询

count默认为0,如果count = 1,那么分页查询,不查总数

7. 过滤查询字段

可以精确某几个字段查询,多个字段通过(",")分割

8.复杂查询

9.左(右)连表查询,ON后面添加过滤条件

  ON查询更多的偏向于后端,如果前端开发不熟悉,可以让后端直接开新接口

/**
     * t_test_a 左连接 t_test_b
     */
    @Link(  print = false, printRm = false,
            ones = { @OneToOne(leftColumn = "b_id", rightClass = TestBVo.class, joinType = JoinType.LEFT, onArgName = "abOn") })
    List<TestADto> listTestALtTestB(@Param(Constants.WRAPPER) Wrapper<TestAVo> wrapper);

 

 

10.query.js代码

const query = {}

/**
 * w (已经弃用,请使用R)过滤条件
 * r 过滤条件
 * o 排序
 * j 左连接、右连接 ON 后面过滤条件,主要面向后端开发人员
 * p 分页条件
 * s 过滤字段
 */
query.new = () => {
  return {
    'w': [],
    'r': [],
    'o': [],
    'j': [],
    'p': {},
    's': {}
  }
}

/**
 * 数组过滤条件
 * @param {query} q
 * @param {array} arrKv 数组:key/value
 * @param {array} arrKm 数组:key/mode
 */
query.toF = (q, arrKv, arrKm) => {
  for (var i in arrKv) {
    query.toR(q, i, arrKv[i], arrKm[i])
  }
  return q
}

/**
 * 过滤条件
 * @param {query} q
 * @param {key} k
 * @param {value} v
 * @param {mode} m 默认值(LK)非必填
 * @param {name} n 默认值(a1)非必填
 * @param {type} t 默认值(and)非必填
 * @param {type} t1 默认值(and)非必填
 * @param {seq} s 默认值(0)非必填
 */
query.toR = (q, k, v, m, t1, s, n, t) => {
  if (v === '') {
    return q
  }
  if (m === 'IS' || m === 'NIS') {
  } else {
    if (v === null) {
      return q
    }
  }
  if (typeof m === 'undefined') {
    m = 'LK'
  }
  if (typeof n === 'undefined') {
    n = 'a1'
  }
  if (typeof t === 'undefined') {
    t = 'and'
  }
  if (typeof t1 === 'undefined') {
    t1 = 'and'
  }
  if (typeof s === 'undefined') {
    s = 0
  }
  let rObj = null
  q.r.forEach(function (val, i) {
    if (val.n === n) {
      rObj = val
    }
  })
  if (rObj) {
    rObj.w.push({
      'k': k,
      'v': v,
      'm': m,
      't': t1,
      's': s
    })
  } else {
    q.r.push({
      'n': n,
      't': t,
      'w': [{
        'k': k,
        'v': v,
        'm': m,
        't': t1,
        's': s
      }]
    })
  }
  return q
}

/**
 * 过滤条件(已经弃用,请使用toR方法)
 * @param {query} q
 * @param {key} k
 * @param {value} v
 * @param {mode} m 默认值(LK)非必填
 * @param {type} t1 默认值(and)非必填
 * @param {seq} s 默认值(0)非必填
 */
query.toW = (q, k, v, m, t1, s) => {
  if (v === '') {
    return q
  }
  if (m === 'IS' || m === 'NIS') {
  } else {
    if (v === null) {
      return q
    }
  }
  if (typeof m === 'undefined') {
    m = 'LK'
  }
  if (typeof t1 === 'undefined') {
    t1 = 'and'
  }
  if (typeof s === 'undefined') {
    s = 0
  }
  q.w.push({
    'k': k,
    'v': v,
    'm': m,
    't': t1,
    's': s
  })
  return q
}

/**
 * 过滤条件(已经弃用,请使用toR方法)
 * @param {query} q
 * @param {key} k
 */
query.toWNull = (q, k) => {
  q.w.push({
    'k': k,
    'v': null,
    'm': 'IS'
  })
  return q
}

/**
 * 左连接、右连接 ON 后面过滤条件
 * @param {query} q
 * @param {key} k
 * @param {value} v
 * @param {mode} m 默认值(LK)非必填
 * @param {name} n 设置联表查询时,ON的参数名
 * @param {type} t1 默认值(and)非必填
 * @param {seq} s 默认值(0)非必填
 */
query.toJ = (q, k, v, m, n, t1, s) => {
  if (v === null || v === '') {
    return q
  }
  if (typeof m === 'undefined') {
    m = 'LK'
  }
  if (typeof t1 === 'undefined') {
    t1 = 'and'
  }
  if (typeof s === 'undefined') {
    s = 0
  }
  let rObj = null
  q.j.forEach(function (val, i) {
    if (val.n === n) {
      rObj = val
    }
  })
  console.log(rObj)
  if (rObj) {
    rObj.r[0].w.push({
      'k': k,
      'v': v,
      'm': m,
      't': t1,
      's': s
    })
  } else {
    q.j.push({
      'n': n,
      'r': [{
        't': 'and',
        'w': [{
          'k': k,
          'v': v,
          'm': m,
          't': t1,
          's': s
        }]
      }]
    })
  }
  return q
}

/**
 * 排序
 * @param {query} q
 * @param {key} k 排序字段
 * @param {type} t 升序还是降序 asc or desc
 */
query.toO = (q, k, t) => {
  if (typeof k === 'undefined' || k === '') {
    return q
  }
  if (typeof t === 'undefined') {
    t = 'desc'
  }
  q.o.push({
    'k': k,
    't': t
  })
  return q
}

/**
 * 分页条件
 * @param {query} q
 * @param {pageNo} n 第几页
 * @param {pageSize} s 每页条数
 * @param {count} c 是否查询总数,非必填,如果设置为1,则不会查询总数
 */
query.toP = (q, n, s, c) => {
  if (typeof c === 'undefined' || c === '') {
    c = 0
  }
  q.p = {
    'n': n,
    's': s,
    'c': c
  }
  return q
}

/**
 * 过滤字段
 * @param {query} q
 * @param {value} v 过滤字段,支持String类型多个字段(",")逗号隔开,如:"username,mob",或者进行数组赋值,如:["username", "mob"]
 */
query.toS = (q, v) => {
  q.s = {
    'v': v
  }
  return q
}

/**
 * query对象转string
 */
query.toJsonStr = (q) => {
  return JSON.stringify(q)
}

/**
 * 查询条件url编码
 */
query.toEncode = (q) => {
  return encodeURIComponent(JSON.stringify(q))
}

/**
 * 查询条件频接
 */
query.toQ = (q) => {
  return '?query=' + encodeURIComponent(JSON.stringify(q))
}

export default query
    EQ(" = ", "等于"), 
    NE(" <> ", "不等于"), 
    LK(" like ", "包含"), 
    LLK(" like ", "左包含"), 
    RLK(" like ", "右包含"), 
    NLK(" not like ", "不包含"), 
    IN(" in ", "在..中"), 
    NIN(" not in ", "不在..中"),
    LT(" < ", "小于"), 
    LE(" <= ", "小于等于"), 
    GT(" > ", "大于"), 
    GE(" >= ", "大于等于"), 
    BT(" between ", "位于..和..之间"),
    IS(" is ", "是"),
    NIS(" is not ", "不是"),
    ASC(" asc ", "升序"),
    DESC(" desc ", "降序"),
    AND("and", "and"),
    OR("or", "or"),

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值