3 回答

TA貢獻(xiàn)1852條經(jīng)驗 獲得超7個贊
如果你不喜歡面對對象的語法:
query().from("user") .where( (user.firstName.like("Bob")).or(user.firstName.like("Ann"))) .orderBy(user.firstName.asc()) .list(user);
面向?qū)ο笳Z法:
InsertSQL sql = new InsertSQL();sql.insertInto("students") .value("id", new Integer(id)) .value("name", name) .value("gender", gender);
-----------------------------------
最后贈送你一個我以前用過的DSL
/** * 配置路由規(guī)則 */RouteBuilder builder = new RouteBuilder() { public void configure() { from("/user").filter(header("language").isEqualTo("zh")).to("/zh/user"); from("/user/edit/3").choice() .when(header("foo").isEqualTo("bar")).to("queue:d") .when(header("foo").isEqualTo("cheese")).to("queue:e") .otherwise().to("queue:f"); } };
具有表達(dá)性的代碼是:做什么,而不是怎么做。

TA貢獻(xiàn)1808條經(jīng)驗 獲得超4個贊
不知道有多少人做過這種"靈活"拼SQL的東西,我想他們最后都會發(fā)現(xiàn),SQL太靈活,語言太死板,拼來拼去也不會讓人滿意。
一個可行的實踐是將SQL語句集中起來。實際上每次去找數(shù)據(jù)庫的SQL語句中變量并不多,完全可以事先寫好SQL語句,分配個id,簡單包裝一下,在調(diào)用的時候給出參數(shù)。
這樣做的好處至少有這兩個:
1. 可以保證sql語句經(jīng)過測試,用上了該用的索引
2. 參數(shù)化查詢可以避免SQL注入攻擊

TA貢獻(xiàn)1863條經(jīng)驗 獲得超2個贊
針對SQL而言,建議直接拼SQL或找個框架吧,比如Yii框架的就支持下面這樣的寫法:(是不是簡單多了呢?)
$rows = (new \yii\db\Query()) ->select(['id', 'email']) ->from('user') ->where(['last_name' => 'Smith']) ->limit(10) ->all();
針對問題標(biāo)題本身——“php中如何解決函數(shù)參數(shù)列表過長問題”——PHP有個很強(qiáng)大的array,可以用它來傳參數(shù)呀(變相的命名參數(shù)):
function foo($params){ $params = array_merge(array( 'select' => 'default selector', 'where' => 'default where', // ... ), $params); // do something with $params... }
- 3 回答
- 0 關(guān)注
- 257 瀏覽
添加回答
舉報