---
title: "db模块"
date: "2022-01-30T10:20:16.000Z"
permalink: "/pages/module/db/"
---
# 引用模块
db是默认引入的模块,所以无需引入
# select
* 入参:sql:String
* 返回值:List<Map<String,Object>>
* 函数说明:查询List结果
return db.select('select * from sys_user');
# selectInt
* 入参:sql:String
* 返回值:Integer
* 函数说明:查询int结果
// 需要保证结果返回一行一列
return db.selectInt('select count(*) from sys_user');
# selectOne
* 入参:sql:String
* 返回值:Map<String,Object>
* 函数说明:查询单个对象
return db.selectOne('select * from sys_user limit 1');
# selectValue
* 入参:sql:String
* 返回值:Object
* 函数说明:查询单个值
//需要保证结果返回一行一列
return db.selectValue('select user_name from sys_user limit 1');
# page
* 入参:sql:String
* 入参:limit : long 可省略
* 入参:offset : long 可省略
* 返回值:Object 默认返回为Object,如果自定义了分页结果,则返回自定义结果
* 函数说明:分页查询
return db.page('select * from sys_user');
# update
* 入参:sql:String
* 返回值:Integer
* 函数说明:执行增删改操作
return db.update('delete from sys_user');
# insert
* 入参:sql:String
* 入参: id: String,主键列,可空,如无特殊情况不需要传入
* 返回值: Object
return db.insert("insert into sys_user(username,password) values('admin','admin)");
# call
* 入参:sql: String
* 返回值:Map<String,Object>
* 函数说明:调用存储过程
// 入参格式: #{参数名}
// 出参格式: @{参数名, java.sql.Types的类型字符串}
// 出入参格式:@{参数名(值、变量、表达式), java.sql.Types的类型字符串}
var cs1 = body.cs1;
var cs2 = body.cs2;
return db.call("""
call test(#{cs1}, @{height(cs2), INTEGER}, @{v_area, VARCHAR})
""")
/**
{
height: 10,
v_area: "16.85"
}
*/
# batchUpdate
* 入参:sql:String
* 入参: batchArgs: List<Object[]>数据,占位符和数组下标对应
* 返回值: int
return db.batchUpdate("""
update sys_dict set is_del = ? where is_del = ?
""", [
["1", "0"].toArray()
])
# cache
* 入参:cacheName:String
* 入参:ttl:long 缓存有效期,单位毫秒,可省略,默认为配置的值
* 返回值:db //返回当前实例,即可以链式调用
* 函数说明:使用缓存
// 使用缓存名为user的查询
return db.cache('user').select('select * from sys_user');
# deleteCache
* 入参:cacheName:String
* 返回值:db //返回当前实例,即可以链式调用
* 函数说明:删除名为cacheName的缓存
// 删除名为user的缓存
db.deleteCache('user');
# transaction
* 入参:callback:Function,回调函数,可省略
* 返回值:Object
* 函数说明:开启事务
* 自动事务
var val = db.transaction(()=>{
var v1 = db.update('...');
var v2 = db.update('....');
return v2;
});
return val;
* 手动开启事务
var tx = db.transaction(); //开启事务
try{
var value = db.update('...');
tx.commit(); // 提交事务
return value;
}catch(e){
tx.rollback(); // 回滚事务
}
# 列名转换
* normal 列名保持原样
* camel 列名使用驼峰命名
* pascal 列名使用帕斯卡命名
* upper 列名保持全大写
* lower 列名保持全小写
return db.camel().select('select * from sys_user');
# 单表操作API
操作入口:db.table('table_name')
# logic
* 作用:设置本查询是带有逻辑删除的,在执行delete方法时,会转换为update语句,在执行select相关方法时,会拼接logic_field <> logic_value
# withBlank
* 作用:设置后续插入或修改时,不过滤空值。
# column
* 入参:column: String 列名
* 作用:设置要查询列的,select语句中有效
# column
* 入参:column: String 列名
* 入参: value : Object 值
* 作用:设置要操作的列的值,非select语句中有效
# primary
* 入参:primary: String 主键
* 入参:defaultValue: Object 插入时使用的默认值,可省略
* 作用:设置主键列,在update中语句有效,或save方法判断标准
# insert
* 入参: data : Map insert的列和值,可省略(通过column设置)
// insert into sys_user(user_name,role) values('李富贵','admin')
return db.table('sys_user').insert({ user_name : '李富贵', role : 'admin'})
# batchInsert
* 入参: collection : Collection insert的列和值的集合
* 入参: batchSize : int batchSize
// insert into sys_user(user_name,role) values('李富贵','admin')
return db.table('sys_user').batchInsert([
{ user_name : '李富贵', role : 'admin'},
{ user_name : '王二狗', role : 'admin'},
{ user_name : '管理员', role : 'super-admin'},
])
# update
* 入参: data : Map insert的列和值,可省略(通过column设置)
* 入参:isUpdateBlank: boolean 是否更新空值字段(可省略,默认为false)
// update sys_user set user_name = '王二狗' where id = 1
return db.table('sys_user').primary('id').update({ id: 1, user_name : '王二狗'})
# save
* 入参: data : Map insert或update的列和值,可省略(通过column设置)
* 入参: beforeQuery : boolean 是否根据id查询有没有数据,可省略(默认false)
// insert into sys_user(id,user_name) values('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','王二狗');
return db.table('sys_user').primary('id', uuid()).save({user_name: '王二狗'});
// insert into sys_user(user_name) values('王二狗');
return db.table('sys_user').primary('id').save({user_name: '王二狗'});
// update sys_user set user_name = '王二狗' where id = 1
return db.table('sys_user').primary('id').save({id: 1,user_name: '王二狗'});
# select
查询list(与db.select 作用相同)
// select * from sys_user
return db.table('sys_user').select()
# page
分页查询(与db.page 作用相同)
// select * from sys_user
return db.table('sys_user').page()
# where
设置查询条件
* eq --> ==
* ne --> <>
* lt --> <
* gt --> >
* lte --> <=
* gte --> >=
* in --> in
* notIn --> not in
* like --> like
* notLike --> not like
// select * from sys_user where user_name like '%李富贵%' and role = 'admin'
return db.table('sys_user')
.where()
.like('user_name','%李富贵%')
.eq('role','admin')
.select()
# 其它的自己摸索吧,API抄的mybatis-plus,文档写不动了