跳到主要内容

orm

简介

数据库中间件, 更具配置文件生成mysql数据库, 以及对应gs操作代码

组件接口

batch_worker.gs

批量处理sql处理类

函数原型函数作用
void post_sql(string sql)添加延时处理 sql
void close_worker()停止批量处理sql
void set_time_internal(mixed val)设置两次处理sql的时间间隔
int get_time_internal()获取两次处理sql的时间间隔

MetaTable.gs

函数原型函数作用
bool ensure_table_exists()* 确保表格存在,如果不存在则创建
bool create_table(bool is_force = false)创建表格
string get_version()获取数据库当前版本号
bool set_version(string version)设置数据库当前版本号
string get_value(string name)获取指定键的值
bool set_value(string name, string value)设置指定键的值

orm.gs

函数原型函数作用
bool ensure_db(map config)确保数据库存在, 如果不存在则创建
bool init_db(string name, map db_config, map options = )初始化数据连接池
DbInfo load_db_info(string path)从文件中加载数据库信息, 可以用来判断当前数据库是否和开发环境一致
DbInfo db_info()数据库中所有表的信息
TableInfo table_info(string name)表格的列信息以及索引信息
map table_indexes(string table_name)表格的索引信息
map table_columns(string name)显示表的信息
array all_tables()获取所有表
array select(string sql, map val = , int max_row = 1000)执行sql查找命令
int exec(string sql, map val = )执行sql命令
int run_immediately(string sql, map val = )马上运行非 select sql 命令
bool run_wait(string sql, map val = )延时批量运行sql命令
object get_conn()从连接池中获取数据链接
void give_conn(object conn)将连接放回连接池
string format_sql(string sql, mixed param = )使用 map 对 sql 中 ${#name} 进行赋值变换
map get_db_config()获取数据库配置
bool table_exists(string name)判断表是否存在
string get_create_db_sql(bool with_tables = true)获取数据库的 DDL 语句

TableBase.gs

函数原型函数作用
void set_parent_bean(class_map m)设置映射的 class 实例
class_map get_parent_bean()* 获取映射的 class 实例
bool delete_row(int id)删除指定行
class_map get_by_id(int id)根据 ID 获取单条记录
array get_all()获取所有记录
class_map single(string condition)根据条件获取单条记录
array multi(string condition = nil)根据条件获取多条记录
array select(string condition = nil, array col = nil)根据条件获取多条记录
TableInfo get_table_info()获取表信息

样例

import pkg.orm;
import gs.util.*;
map mysql = {
"driver" : "mysql",
"address" : "127.0.0.1",
"db": "err1",
"user": "root",
"passwd": "123",
"max_conn_count": 2,
"thread_num": 4
};

// 初始化数据库
logger.init({
"log_level" : LogLevel.DEBUG,
"log_device" : [file.get_stdout()],
"time_format" : TimeType.COMPACT_HMS
});

orm.init_db("error", mysql, {
"db_version": "1.0.0", // 数据库版本
"table_bean_dir": "/sample/table",
"auto_create_table": true, // 是否自动创建数据库
"force_create_table": true, // 是否强制创建表
// "create_bean": true,
"check_table": true,
"auto_create_table": true,
});