NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
neforce::sql_mapper< T > 模板类 参考

ORM 对象-关系映射器 更多...

#include <sql_mapper.hpp>

静态 Public 成员函数

static string table_name ()
 获取映射的表名
static string create_table_sql (string_view table_override="")
 生成 CREATE TABLE SQL
static string drop_table_sql (string_view table_override="")
 生成 DROP TABLE SQL
static string select_sql (string_view table_override="")
 生成 SELECT 查询 SQL
static string insert_sql (string_view table_override="", const sql_dialect dialect=sql_dialect::GENERIC)
 生成 INSERT SQL(占位符由方言自动决定)
static string delete_sql (string_view table_override="", const sql_dialect dialect=sql_dialect::GENERIC)
 生成 DELETE SQL(按主键删除)
static string update_sql (string_view table_override="", const sql_dialect dialect=sql_dialect::GENERIC)
 生成 UPDATE SQL(按主键更新所有非主键字段)
static vector< stringget_values (const T &entity, bool include_pk=true)
 从实体提取所有持久化字段的值(以 SQL 字面量表示)
static reflect::meta_any get_pk_value (const T &entity)
 获取主键值
static T from_row (const idb_tb_result &row, const unordered_map< string, size_t > &col_map={})
 从结果行构建实体对象
static vector< T > from_result (unique_ptr< idb_tb_result > result)
 从查询结果集构建实体对象列表
static string select_by_pk_sql (string_view table_override="", const sql_dialect dialect=sql_dialect::GENERIC)
 生成按主键查询的 SELECT SQL

详细描述

template<typename T>
class neforce::sql_mapper< T >

ORM 对象-关系映射器

模板参数
T实体类型

通过反射元数据自动完成实体类型与数据库表之间的映射。 所有方法均为静态方法,无需实例化。

在文件 sql_mapper.hpp173 行定义.

成员函数说明

◆ create_table_sql()

template<typename T>
string neforce::sql_mapper< T >::create_table_sql ( string_view table_override = "")
inlinestatic

◆ delete_sql()

template<typename T>
string neforce::sql_mapper< T >::delete_sql ( string_view table_override = "",
const sql_dialect dialect = sql_dialect::GENERIC )
inlinestatic

生成 DELETE SQL(按主键删除)

参数
table_override可选的表名覆盖
dialect数据库方言
返回
DELETE SQL 字符串
异常
value_exception无主键属性时抛出

在文件 sql_mapper.hpp331 行定义.

引用了 neforce::sql_builder::build(), neforce::sql_builder::delete_from(), neforce::basic_string< CharT, Traits, Alloc >::empty(), GENERIC, neforce::sql_builder::placeholder(), neforce::sql_builder::set_dialect() , 以及 neforce::sql_builder::where_eq().

◆ drop_table_sql()

template<typename T>
string neforce::sql_mapper< T >::drop_table_sql ( string_view table_override = "")
inlinestatic

生成 DROP TABLE SQL

参数
table_override可选的表名覆盖
返回
DROP TABLE SQL 字符串

在文件 sql_mapper.hpp274 行定义.

引用了 neforce::sql_builder::build(), neforce::sql_builder::drop_table_if_exists() , 以及 neforce::basic_string< CharT, Traits, Alloc >::empty().

被这些函数引用 neforce::repository< T, Connect >::drop_table().

◆ from_result()

template<typename T>
vector< T > neforce::sql_mapper< T >::from_result ( unique_ptr< idb_tb_result > result)
inlinestatic

从查询结果集构建实体对象列表

参数
result查询结果集
返回
实体对象列表

在文件 sql_mapper.hpp453 行定义.

引用了 from_row() , 以及 neforce::vector< T, Alloc >::push_back().

被这些函数引用 neforce::repository< T, Connect >::find_all(), neforce::repository< T, Connect >::find_page() , 以及 neforce::repository< T, Connect >::find_where().

◆ from_row()

template<typename T>
T neforce::sql_mapper< T >::from_row ( const idb_tb_result & row,
const unordered_map< string, size_t > & col_map = {} )
inlinestatic

从结果行构建实体对象

参数
row结果行(当前已定位到目标行)
col_map列名到列索引的映射(为空时自动按属性名匹配)
返回
构建的实体对象

在文件 sql_mapper.hpp412 行定义.

被这些函数引用 neforce::repository< T, Connect >::find_by_id() , 以及 from_result().

◆ get_pk_value()

template<typename T>
reflect::meta_any neforce::sql_mapper< T >::get_pk_value ( const T & entity)
inlinestatic

获取主键值

参数
entity实体对象引用
返回
主键值

在文件 sql_mapper.hpp398 行定义.

◆ get_values()

template<typename T>
vector< string > neforce::sql_mapper< T >::get_values ( const T & entity,
bool include_pk = true )
inlinestatic

从实体提取所有持久化字段的值(以 SQL 字面量表示)

参数
entity实体对象引用
include_pk是否包含主键值
返回
值的字符串列表

在文件 sql_mapper.hpp382 行定义.

引用了 neforce::meta_any_to_sql_literal().

◆ insert_sql()

template<typename T>
string neforce::sql_mapper< T >::insert_sql ( string_view table_override = "",
const sql_dialect dialect = sql_dialect::GENERIC )
inlinestatic

生成 INSERT SQL(占位符由方言自动决定)

参数
table_override可选的表名覆盖
dialect数据库方言(默认 GENERIC 即 ?
返回
INSERT SQL 字符串

在文件 sql_mapper.hpp308 行定义.

引用了 neforce::sql_builder::build(), neforce::basic_string< CharT, Traits, Alloc >::empty(), GENERIC, neforce::sql_builder::insert_into(), neforce::vector< T, Alloc >::push_back(), neforce::vector< T, Alloc >::reserve() , 以及 neforce::sql_builder::set_dialect().

◆ select_by_pk_sql()

template<typename T>
string neforce::sql_mapper< T >::select_by_pk_sql ( string_view table_override = "",
const sql_dialect dialect = sql_dialect::GENERIC )
inlinestatic

生成按主键查询的 SELECT SQL

参数
table_override可选的表名覆盖
dialect数据库方言
返回
SELECT ... WHERE pk = placeholder SQL 字符串

在文件 sql_mapper.hpp477 行定义.

引用了 neforce::sql_builder::build(), neforce::basic_string< CharT, Traits, Alloc >::empty(), neforce::sql_builder::from(), GENERIC, neforce::sql_builder::placeholder(), neforce::sql_builder::select(), neforce::sql_builder::set_dialect() , 以及 neforce::sql_builder::where_eq().

◆ select_sql()

template<typename T>
string neforce::sql_mapper< T >::select_sql ( string_view table_override = "")
inlinestatic

生成 SELECT 查询 SQL

参数
table_override可选的表名覆盖
返回
SELECT SQL 字符串

在文件 sql_mapper.hpp286 行定义.

引用了 neforce::sql_builder::build(), neforce::basic_string< CharT, Traits, Alloc >::empty(), neforce::sql_builder::from() , 以及 neforce::sql_builder::select().

◆ table_name()

◆ update_sql()

template<typename T>
string neforce::sql_mapper< T >::update_sql ( string_view table_override = "",
const sql_dialect dialect = sql_dialect::GENERIC )
inlinestatic

生成 UPDATE SQL(按主键更新所有非主键字段)

参数
table_override可选的表名覆盖
dialect数据库方言
返回
UPDATE SQL 字符串
异常
value_exception无主键属性时抛出

在文件 sql_mapper.hpp352 行定义.

引用了 neforce::sql_builder::build(), neforce::basic_string< CharT, Traits, Alloc >::empty(), GENERIC, neforce::sql_builder::next_placeholder(), neforce::sql_builder::set_dialect(), neforce::sql_builder::set_param(), neforce::sql_builder::update() , 以及 neforce::sql_builder::where_eq().


该类的文档由以下文件生成: