暂眷 發表於 2023-1-9 15:15:00

mormot118ORM

<p>mormot118ORM</p>
<p>unit mORMot;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> root class for defining and mapping database records</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> - inherits a class from TSQLRecord, and add published properties to describe
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> the table columns (see TPropInfo for SQL and Delphi type mapping/conversion)
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> - this published properties can be auto-filled from TSQLTable answer with
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> FillPrepare() and FillRow(), or FillFrom() with TSQLTable or JSON data
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> - these published properties can be converted back into UTF-8 encoded SQL
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> source with GetSQLValues or GetSQLSet or into JSON format with GetJSONValues
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> - BLOB fields are decoded to auto-freeing TSQLRawBlob properties
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> - any published property defined as a T*ObjArray dynamic array storage
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> of persistents (via TJSONSerializer.RegisterObjArrayForJSON) will be freed
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> - consider inherit from TSQLRecordNoCase and TSQLRecordNoCaseExtended if
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> you expect regular NOCASE collation and smaller (but not standard JSON)
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> variant fields persistence
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> - is called TOrm in mORMot 2</span>
TSQLRecord = <span style="color: rgba(0, 0, 255, 1)">class</span>(TObject)</pre>
</div>
<p>///用于定义和映射数据库记录的根类</p>
<p>//-从TSQLRecord继承一个类,并添加已发布的属性来描述</p>
<p>//表列(请参阅TPropInfo for SQL和Delphi类型映射/转换)</p>
<p>//-可以使用</p>
<p>//FillPrepare()和FillRow(),或具有TSQLTable或JSON数据的FillFrom()</p>
<p>//-这些已发布的属性可以转换回UTF-8编码的SQL</p>
<p>//具有GetSQLValues或GetSQLSet的源代码,或具有GetJSONValues的JSON格式</p>
<p>//-BLOB字段被解码以自动释放TSQLRawBlob属性</p>
<p>//-定义为T*ObjArray动态数组存储的任何已发布属性</p>
<p>//的持久性(通过TJSONSerializer.RegisterObjArrayForJSON)将被释放</p>
<p>//-如果出现以下情况,请考虑从TSQLRecordNoCase和TSQLRecordNoCaseExtended继承</p>
<p>//您需要常规NOCASE排序规则和更小的排序规则(但不是标准JSON)</p>
<p>//变量字段持久性</p>
<p>//-在mORMot 2中称为TOrm</p>
<div class="cnblogs_code">
<pre>TSQLRecordPeople = <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">(TSQLRecord)
</span><span style="color: rgba(0, 0, 255, 1)">protected</span><span style="color: rgba(0, 0, 0, 1)">
    fData: TSQLRawBlob;
    fFirstName: RawUTF8;
    fLastName: RawUTF8;
    fYearOfBirth: integer;
    fYearOfDeath: word;
    fAnother: TSQLRecordPeople;
    {$ifdef TESTRECORD}
    fSexe: TPeopleSexe;
    fSimple: TTestCustomJSONArraySimpleArray;
</span><span style="color: rgba(0, 0, 255, 1)">public</span>
    <span style="color: rgba(0, 0, 255, 1)">class</span> procedure InternalRegisterCustomProperties(Props: TSQLRecordProperties); <span style="color: rgba(0, 0, 255, 1)">override</span><span style="color: rgba(0, 0, 0, 1)">;
    {$endif}
published
    property FirstName: RawUTF8 read fFirstName write fFirstName;
    property LastName: RawUTF8 read fLastName write fLastName;
    property Data: TSQLRawBlob read fData write fData;
    property YearOfBirth: integer read fYearOfBirth write fYearOfBirth;
    property YearOfDeath: word read fYearOfDeath write fYearOfDeath;
    property Another: TSQLRecordPeople read fAnother write fAnother;
{$ifdef TESTRECORD}
    property Sexe: TPeopleSexe read fSexe write fSexe;
</span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)">
    property Simple: TTestCustomJSONArraySimpleArray read fSimple;
{$endif}
end;</span></pre>
</div>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    <p>本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/17037157.html</p><br><br>
来源:https://www.cnblogs.com/hnxxcxg/p/17037157.html
頁: [1]
查看完整版本: mormot118ORM