0.0.32-beta.2 • Published 1 year ago

@icreate/imedx-js-sdk v0.0.32-beta.2

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

安装

npm i @icreate/imedx-js-sdk

引用

import { createClient, DbDataType, sql } from '@icreate/imedx-js-sdk'

创建 imedxService

/**
* @description: 创建 imedxService
* @param {String} URL 请求地址
* @param {String} headers 请求头
* @param {String} appId 应用ID
* @param {String} secretKey 密钥
* @param {String} autoEncrypt 自动加密
* @return {*}
*/
const imedxService = createClient('http://192.168.2.24:9090', {
  headers: { data_source: 'default' },
  appId: '',
  secretKey: '',
  autoEncrypt: true
})

请求拦截器

imedxService.interceptors.request.use(
  config => {
    // if (store.getters.token) {
    config.headers['Authorization'] = `Bearer zzzzzzzzzzz`
    // }
    return config
  },
  error => {
    console.log('------request error------', error)
    return Promise.reject(error)
  }
)

响应拦截器

imedxService.interceptors.response.use(
  async res => {
    try {
      res.data = JSON.parse(res.data)
    } catch (error) {
      return Promise.reject(error)
    }
    if (res.code !== 200) {
      return Promise.reject(new Error(res.message || 'Error'))
    } else {
      return res
    }
  },
  error => {
    console.log('------response error------', error)
    return Promise.reject(error)
  }
)

查询

  • from: 表名称。
  • select: 查询列字符串,无入参时默认 *
  • where: 条件字符串,默认 AND 拼接。
  • in: 列名 + 数据集。
  • notIn: 列名 + 数据集。
  • and 条件字符串,是会追加 AND 条件。
  • or 拼接 OR 条件
  • order 排序 倒叙直接列名.desc
  • limit pageSize 分页查询条数 currentPage 当前页,从 1 开始
const startDate = '2022-01-01'
const endDate = '2022-02-01'
const StudentIds = ['1111111', '22222222', '333333333']
const StudentName = ['aaaaaa', 'bbbbbbb', 'cccccccc']
let keys = '关键字'
keys = keys.replace(/'/g, `''`)
var LikeKey = [
  `STUDENT_ID LIKE '%${keys}%'`,
  `STUDENT_NAME LIKE '%${keys}%'`,
  `HEIGHT LIKE '%${keys}%'`,
  `WEIGHT LIKE '%${keys}%'`
]

const data = await imedxService
  .from('SIMS_STUDENT')
  .select('STUDENT_ID, STUDENT_NAME, HEIGHT, WEIGHT')
  .where(`CREATED_TIME >= '${startDate}'`, `CREATED_TIME < '${endDate}'`, `STATUS = 1`)
  .in('STUDENT_ID', StudentIds)
  .notIn('STUDENT_NAME', StudentName)
  .and(`GENDER = '男'`, `NATION = '汉'`)
  .or(LikeKey)
  .order('STUDENT_ID', 'HEIGHT.DESC')
  .limit(20, 1)

查询 - 根据主键 ID

  • from: 表名称。
  • select: 查询列字符串,无入参时默认 *
  • id: 主键 ID 的值。
const data = await imedxService
  .from('SIMS_STUDENT')
  .select('STUDENT_ID, STUDENT_NAME, HEIGHT, WEIGHT')
  .id('123456')

查询 - 支持参数化设置

  • params 参数对象,支持多入参,合并参数属性。
const params = {
  startDate: '2022-01-01',
  endDate: '2022-02-01',
  status: 1
}
const data = await imedxService
  .from('SIMS_STUDENT')
  .select('STUDENT_ID, STUDENT_NAME, HEIGHT, WEIGHT')
  .where(`CREATED_TIME >= #{startDate}`, `CREATED_TIME < #{endDate}`, `STATUS = #{status}`)
  .order('STUDENT_ID', 'HEIGHT.DESC')
  .limit(20, 1)
  .params(params)

查询 - CLOB 类型列

  • selectClob: 列名称,仅单行单列查询。
const data = await imedxService
  .from('DB_SOURCE')
  .selectClob('AVATAR')
  .where('id="cccc"')

查询 - BLOB 类型列

  • selectBlob 列名称,仅单独列查询。
const data = await imedxService
  .from('DB_SOURCE')
  .selectBlob('AVATAR')
  .where('id="cccc"')

复杂查询

操作对象方法入参说明
sqldefine表名+列数组:{ name: '', columns: [] }定义表结构
select列对象,无参时默认*,支持多入参指定查询列
from表对象指定查询表
where列条件指定 where 条件
orderBy列对象,倒序直接: 列.desc(),支持多入参指定排序规则
paginationpageSize: 行数, currentPage:当前页指定分页查询;必须有 order by 条件
toQuery返回查询对象
join表对象join 表
leftJoin表对象left join 表
rightJoin表对象right join 表
innerJoin表对象inner join 表
on列条件在 join、leftJoin、rightJoin、innerJoin 后使用,指定关联条件
isNullIS NULL
isNotNullIS NOT NULL
equals值或列等于: =
notEquals值或列不等于:<>
gt值或列大于:>
gte值或列大于等于:>=
lt值或列小于:<
lte值或列小于等于:<=
likeLIKE
notLikeNOT LIKE
in值集合IN
notIn值集合NOT IN
between开始值 + 结束值BETWEEN
notBetween开始值 + 结束值NOT BETWEEN
desc倒序 DESC
and列条件拼接 AND 条件
or列条件拼接 OR 条件
// 定义学生表
var SimsStudent = sql.define({
  name: 'SIMS_STUDENT',
  columns: ['COLLEGE_ID', 'CLASS_ID', 'STUDENT_ID', 'STUDENT_NAME', 'ENG_NAME', 'ID_CARD_NO', 'CONTENT']
})

// 定义班级表
var SimsClass = sql.define({
  name: 'SIMS_CLASS',
  columns: ['COLLEGE_ID', 'MAJOR_ID', 'CLASS_ID', 'CLASS_NAME', 'STUDENT_NUMBER']
})

// 单行单列查询 CLOB类型
var query = SimsStudent.selectClob(SimsStudent.CONTENT)
  .from(SimsStudent)
  .where(SimsStudent.STUDENT_ID.equals('boom'))
  .toQuery()

// 单表查询
var query1 = SimsStudent
  .select(SimsStudent.STUDENT_ID, SimsStudent.STUDENT_NAME, SimsStudent.ID_CARD_NO)
  .from(SimsStudent)
  .where(
    SimsStudent.STUDENT_NAME
      .equals('boom')
      .and(SimsStudent.ENG_NAME.equals('sssss'))
      .or(SimsStudent.COLLEGE_ID.equals('55555555').and(SimsStudent.CLASS_ID.isNull()))
  )
  .toQuery()

// 关联表查询
var query2 = SimsStudent
  .select()
  .from(
    SimsStudent
      .join(SimsClass)
      .on(SimsStudent.COLLEGE_ID.equals(SimsClass.COLLEGE_ID))
  )
  .where(SimsStudent.STUDENT_NAME.equals('boom').and(SimsClass.CLASS_NAME.equals('aaaaaa')))
  .orderBy(SimsClass.CLASS_ID.desc(), SimsStudent.STUDENT_ID)
  .pagination(20, 1)
  .toQuery()

const data = await imedxService.commit(query, query1, query2)

SQL执行

  • SQLQuery:SQL语句,参数对象
  • SQL语句中参数用 #{} 占位。
var querySQL = `SELECT * FROM SIMS_STUDENT WHERE ID = #{ID} AND NAME = #{NAME)`
var params = {ID: '159159159', NAME: '储某某'}
var query = sql.SQLQuery(querySQL, params)

const data = await imedxService.commit(query)

插入数据

  • from: 表名称。
  • insert: 插入数据集。
  • field: 在 URL 中指定列对应数据类型。
const data = await imedxService
  .from('SIMS_STUDENT')
  .insert([
    { ID: '6', STUDENT_ID: '6', STUDENT_NAME: '6', HEIGHT: '6', version: '1' },
    { ID: '8', STUDENT_ID: '8', STUDENT_NAME: '8', HEIGHT: '8', version: '1' }
  ])
  .field('ID', DbDataType.Varchar2)
  .field('STUDENT_ID', DbDataType.Varchar2)
  .field('STUDENT_NAME', DbDataType.Varchar2)

更新数据

  • from: 表名称。
  • update: 更新数据集。
const data = await imedxService
  .from('SIMS_STUDENT')
  .update(
    [
      { ID: '4', STUDENT_ID: '4', STUDENT_NAME: '4', HEIGHT: '4', version: '2' },
      { ID: '5', STUDENT_ID: '5', STUDENT_NAME: '5', HEIGHT: '5', version: '2' }
    ]
  )

更新数据 - 根据主键 ID

  • from: 表名称。
  • update: 更新数据集 + 主键 ID 值。
const data = await imedxService
  .from('SIMS_STUDENT')
  .update({ STUDENT_ID: '11', STUDENT_NAME: '2' }, 'aaaaaa')

删除数据

  • from: 表名称。
  • delete: 删除数据集。
const data = await imedxService
  .from('SIMS_STUDENT')
  .delete([{ ID: '4' }, { ID: '5' }])

删除数据 - 根据主键 ID

  • from: 表名称。
  • delete: 无需入参
  • id: 主键值
const data = await imedxService
  .from('SIMS_STUDENT')
  .delete()
  .id('5')

存储过程调用(无返回值)

  • proc1: 存储过程过程名 + 存储过程过程入参 JSON 字符串
const data = await imedxService.proc1('procedure_name', '{"p_user_id":"sa"}')

存储过程调用(有返回值)

  • proc2: 存储过程过程名 + 存储过程过程入参 JSON 字符串
const data = await imedxService.proc2('procedure_name', '{"p_user_id":"sa"}')

存储过程调用 - 方式二

  • proc1:无返回值;入参:存储过程名,参数对象
  • proc2:有返回值;入参:存储过程名,参数对象
var procName = `P_TEST`
var params = {ID: '159159159', NAME: '储某某'}
var proc1 = sql.proc1(procName, params)
var proc2 = sql.proc1(procName, params)

const data = await imedxService.commit(proc1, proc2)

函数调用

  • func: 函数名 + 函数入参对象
const data = await imedxService.func('function_name', { param1: 'value1' })

多表操作

  • 多张表的 增 删 改 操作 - 写法一
  • result_id: 请求 ID,用于区分结果集属于哪个表操作。
  • table_name: 表名称。
  • type: 操作类型 insert|update|delete
  • data: 操作数据集
  • fields: 列类型对象
const data = await imedxService
  .commit(
    {
      result_id: '111111',
      table_name: 'ICS_TEST_TABLE',
      type: 'insert',
      data: [
        { ID: '10', name: '10', age: '10', address: '10', version: '1' },
        { ID: '11', name: '11', age: '11', address: '11', version: '1' }
      ],
      fields: { desc: DbDataType.Clob, remark: DbDataType.Varchar2 }
    },
    {
      result_id: '222222',
      table_name: 'ICS_TEST_TABLE',
      type: 'update',
      data: [
        { ID: '12', name: '12', age: '12', address: '12', version: '1' },
        { ID: '13', name: '13', age: '13', address: '13', version: '1' }
      ],
      fields: { desc: DbDataType.Clob, remark: DbDataType.Varchar2 }
    },
    {
      result_id: '333333',
      table_name: 'ICS_TEST_TABLE',
      type: 'delete',
      data: [
        { ID: '12', name: '12', age: '12', address: '12', version: '1' },
        { ID: '13', name: '13', age: '13', address: '13', version: '1' }
      ],
      fields: { desc: DbDataType.Clob, remark: DbDataType.Varchar2 }
    }
  )
  • 多张表的 增 删 改 操作 - 写法二
  • sql.define
操作对象方法名入参说明
sqldefine表名+列数组:{ name: '', columns: [] }定义表结构
insert数据集,即需要插入的数据集生成多表操作的 insert 对象
update数据集,即需要更新的数据集生成多表操作的 update 对象
delete数据集,即需要删除的数据集生成多表操作的 delete 对象
fields特殊列类型指定:{ columnName: DbDataType.Clob }参数说明特殊列类型
toQuery返回指定类型对象
// 定义学生表
var SimsStudent = sql.define({
  name: 'SIMS_STUDENT',
  columns: ['COLLEGE_ID', 'CLASS_ID', 'STUDENT_ID', 'STUDENT_NAME', 'ENG_NAME', 'ID_CARD_NO']
})
// 定义班级表
var SimsClass = sql.define({
  name: 'SIMS_CLASS',
  columns: ['COLLEGE_ID', 'MAJOR_ID', 'CLASS_ID', 'CLASS_NAME', 'STUDENT_NUMBER']
})

// 通过表生成 Insert 对象
var Insert = SimsStudent
  .insert({ COLLEGE_ID: '5', CLASS_ID: '5', STUDENT_ID: '5', STUDENT_NAME: '5', ENG_NAME: '1', ID_CARD_NO: '1' })
  .fields({ ID_CARD_NO: DbDataType.Clob })
  .toQuery()

// 通过表生成 Update 对象
var Update = SimsStudent
  .update([{ COLLEGE_ID: '5', CLASS_ID: '6', STUDENT_ID: '6', STUDENT_NAME: '6', ENG_NAME: '6', ID_CARD_NO: '6' }])
  .fields({ ID_CARD_NO: DbDataType.Clob })
  .toQuery()

// 通过表生成 Delete 对象
var Delete = SimsStudent
  .delete([{ COLLEGE_ID: '5', CLASS_ID: '5', STUDENT_ID: '5', STUDENT_NAME: '5', ENG_NAME: '1', ID_CARD_NO: '1' }])
  .fields({ ID_CARD_NO: DbDataType.Clob })
  .toQuery()

const data = await imedxService.commit(Insert, Update, Delete)
0.0.32-beta.1

1 year ago

0.0.32-beta.2

1 year ago

0.0.31

2 years ago

0.0.32

2 years ago

0.0.33

2 years ago

0.0.20

2 years ago

0.0.21

2 years ago

0.0.22

2 years ago

0.0.23

2 years ago

0.0.24

2 years ago

0.0.25

2 years ago

0.0.15

2 years ago

0.0.16

2 years ago

0.0.17

2 years ago

0.0.18

2 years ago

0.0.19

2 years ago

0.0.30

2 years ago

0.0.11

2 years ago

0.0.12

2 years ago

0.0.13

2 years ago

0.0.14

2 years ago

0.0.26

2 years ago

0.0.27

2 years ago

0.0.28

2 years ago

0.0.29

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.5

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago