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`;
};
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 方式查询,匹配的类是自己绑定的类 |
分页查询,由sqlid
加载而来
方法名 |
说明 |
param |
设置查询使用的参数 |
params |
设置查询使用的参数 |
orderBy |
追加排序字段 |
pageNumber |
设置当前第几页 |
pageSize |
设置每页多少条 |
limitSelf |
设置是否自动追加分页语句?否则需要在 sql 语句中自己实现 |
list |
返回查询记录的 sql 语句 |
count |
返回查询记录的 sql 语句 |
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 |
返回删除语句 |
sql 语句缓存集
- 所有的方法在接受查询参数时,都是以
key-value
(param: {[key:string]:any}
) 的形势接受的。
- 当使用
PageQuery
进行查询时,会多传一个参数:当前查询是否是记录数查询,即 true|false
, true 表示本次查询只查询记录数,而不是实际的数据
- 第二个参数是可选的,如果你的 sql 不会用作
PageQuery
查询,那么就可以忽略这个参数了
- 参数方式
WHERE NAME = :param
声明了一个参数名为 param
, 这个参数将在最终 sql 执行时 由引擎赋值,可防止 sql 注入
- 参数方式
WHERE NAME = '+param.name+'
直接取方法的参数进行 sql 语句拼接
- 插入、修改、模板查询方法中,如果参数传入了实体类没有的属性,将被忽略。