ドキュメントの補足 その1
動機は書き終わったのでドキュメントでは説明しきれないところなどを書いていこうかと思います
その1としてますが1だけで終わるかもしれませんw
名前
ソースコード中にも明記してますし、ドキュメントにも書いていますが
EasySqlParser内部のコードはDOMAの移植となっています
ならDOMA.NetとかnDOMAとかにしとくのがセオリーかもしれませんが、最初からDOMAを移植しようと思ったわけではありません
最初はパース処理を正規表現を駆使して、独自に書いていましたが、テストをしているとどうも遅いような気になって試しにDOMAを移植してみようかなと思って移植してみたら倍くらい速度が違いましたww
DOMAは1文字ずつ読み取っているから遅いんじゃないの?と高を括っていたのですがそんなことはなかった
10年くらい歴史があり、ググってたくさん情報が出てくるだけのことはあります
ちなみにEasySqlParserは最初から名前を決めていました
nugetを検索しても同じものが見つからないことを確認しながら…
また、DaoにもDomainにもマッピングのどれとも無関係なためDOMA.NetとかnDOMAと名付けるとか理解不能、理解不能(しげちー風)
マッピングとかせずに「単純にSQLをパースする」だけなのでそのまま名付けてEasySqlParserです1
なぜマッピングしないのにDB種別とか気にする必要があるのか
これはページングの際に必要だからです
ページングでは単一のSQLファイルからカウント文とデータ取得文を内部で生成しています
これ自体はDOMAのパクリ移植です
ページングのSQLは OFFSET
+ LIMIT
だったり、ROW_NUMBER
だったりとDBによってかなり違います
これを実現するためにDBが何なのかの情報が必要になってくるわけです
しかし、つい最近ようやくMySQLで ROW_NUMBER
がサポートされて、メジャーRDB(Microsoft SQL Server,Oracle,Db2,PostgreSQL,MySql,SQLite)すべてで ROW_NUMBER
がサポートされました2
そこでEasySqlParserではオリジナルの機能として、DBの種別を無視してこの ROW_NUMBER
を使用してデータ取得文を生成するようなオプションを用意しました
ドキュメントにもあるようにこのオプションを使用することでView層での行番号表示が容易に実現できます
これはサンプルアプリでも確認ができます