1.0.6 • Published 5 years ago
sql-man v1.0.6
Generate ORM SQL for common databases
配置
在项目根目录建立文件.sqlman.js
module.exports = {
// sql文件的路径,用于构建一个sql语句缓存集
// 除此配置之外,还可以手动创建sql语句缓存集
sqlDir: 'app/sql',
// 批量处理时,每次提交的条数,默认500
maxDeal: 500,
// 数据处理的默认选项,如果不在这里设置此参数,那么实例里写的就是每次执行的默认配置
defOption: {
skipUndefined: true,
skipNull: true,
skipEmptyString: true
}
};sql 文件其实是一个 js/ts 文件,导出返回 sql 的函数:
// 第一个参数是用来渲染sql、传递到数据库引擎中的,第二个参数是可选的,用来标记本次查询是查询记录数还是全部记录的?
export const select_list = (param: {[key:string]:any}, isCountQuery?: boolean) => {
return `SELECT * FROM name`;
};API
SqlServer
sql 辅助
文档
| 方法名 | 说明 |
|---|---|
| insert | 插入 |
| insertIfNotExists | 如果不存在再插入 |
| replace | 先删除再插入 |
| insertBatch | 批量插入 |
| insertBatchIfNotExists | 批量:如果不存在再插入 |
| replaceBatch | 批量:先删除再插入 |
| updateById | 根据主键更新 |
| updateBatchById | 批量:根据主键更新,适用于单主键 |
| updateBatch | 根据指定的条件更新 |
| deleteBatch | 根据指定的条件删除 |
| deleteById | 根据主键删除,适用于单主键 |
| deleteByIdMuti | 根据主键删除,适用于多主键 |
| selectById | 根据主键查询,适用于单主键 |
| selectByIdMuti | 根据主键查询,适用于多主键 |
| all | 查询全部数据 |
| allPage | 查询全部数据,并分页 |
| allCount | 查询全部数据记录数 |
| template | 根据模板查询数据 |
| templateOne | 根据模板查询匹配到的第一条数据 |
| templatePage | 根据模板查询数据,并分页 |
| templateCount | 根据模板查询数据条数 |
| customQuery | 自定义查询 |
| pageQuery | 创建分页查询对象 |
| lambdaQuery | 创建 lambda 方式查询,匹配的类可以自定义 |
| lambdaQueryMe | 创建 lambda 方式查询,匹配的类是自己绑定的类 |
实例
PageQuery
分页查询,由
sqlid加载而来
文档
| 方法名 | 说明 |
|---|---|
| param | 设置查询使用的参数 |
| params | 设置查询使用的参数 |
| orderBy | 追加排序字段 |
| pageNumber | 设置当前第几页 |
| pageSize | 设置每页多少条 |
| limitSelf | 设置是否自动追加分页语句?否则需要在 sql 语句中自己实现 |
| list | 返回查询记录的 sql 语句 |
| count | 返回查询记录的 sql 语句 |
实例
LambdaQuery
Lambda 查询,支持多个 LambdaQuery 对象组合,支持任意查询条件.支持查询列表、单条记录、条数、修改、删除操作
通过以下方法可以设置查询条件,参数都是 字段名,值
| 方法名 | 说明 |
|---|---|
| andEq | |
| andNotEq | |
| andGreat | |
| andLess | |
| andLessEq | |
| andLike | |
| andNotLike | |
| andLeftLike | |
| andNotLeftLike | |
| andRightLike | |
| andNotRightLike | |
| andIsNull | |
| andIsNotNull | |
| andIn | |
| andNotIn | |
| andBetween | |
| andNotBetween | |
| groupBy |
通过以下方法可以设置排序、分组、分页
| 方法名 | 说明 |
|---|---|
| desc | |
| asc | |
| groupBy | |
| limit |
通过以下方法可以设置排序、分组、分页
| 方法名 | 说明 |
|---|---|
| updateColumn | 如果要更新的话,这里可以设置更新的列、内容 |
通过以下方法可以合并另一个 LambdaQuery 的条件
| 方法名 | 说明 |
|---|---|
| and | 以 and 的方式合并另一个 LambdaQuery 的条件 |
| or | 以 or 的方式合并另一个 LambdaQuery 的条件 |
以下方法将终结链条
| 方法名 | 说明 |
|---|---|
| where | 返回当前设置的条件 |
| select | 返回查询语句 |
| one | 返回单条查询语句 |
| count | 返回查询记录数的 语句 |
| update | 返回更新语句 |
| delete | 返回删除语句 |
实例
SqlCache
sql 语句缓存集
注意
- 所有的方法在接受查询参数时,都是以
key-value(param: {[key:string]:any}) 的形势接受的。 - 当使用
PageQuery进行查询时,会多传一个参数:当前查询是否是记录数查询,即true|false, true 表示本次查询只查询记录数,而不是实际的数据 - 第二个参数是可选的,如果你的 sql 不会用作
PageQuery查询,那么就可以忽略这个参数了 - 参数方式
WHERE NAME = :param声明了一个参数名为param, 这个参数将在最终 sql 执行时 由引擎赋值,可防止 sql 注入 - 参数方式
WHERE NAME = '+param.name+'直接取方法的参数进行 sql 语句拼接 - 插入、修改、模板查询方法中,如果参数传入了实体类没有的属性,将被忽略。