以YII、自定義數據操作兩種方式組成的數據庫微服務的服務端。
客戶端介紹
YII控制器
BaseController
所有數據庫操作請求的基類,通過獲取對應的參數實例化數據庫類。提供其他基礎操作函數。
初始化數據庫代碼
// 返回值爲JSON
Yii::$app->response->format = Response::FORMAT_JSON;
// 初始化數據庫信息
$request = Yii::$app->request;
$dbName = $request->get('_db', $request->post('_db', ''));
$tableName = $request->get('_table', $request->post('_table', ''));
$dbType = $request->get('_type', $request->post('_type', 'mysql'));
$this->initDb($dbName, $tableName, $dbType);
DmlController、DqlController
繼承自BaseController,提供自定義的函數操作處理,對應客戶端Dg_Db_Hnb類。
insert
/**
* insert 插入數據
* @return JSON
*/
public function actionInsert()
{
// 參數
$request = Yii::$app->request;
$data = $request->post('data', array());
if ( empty($data) || !is_array($data) ) {
return $this->renderJson(ERROR, ERROR_PARAM_DATA_WRONG, '數據參數錯誤!');
}
// 插入
$response = $this->_dbBase->insert($data);
// 輸出
return $response;
}
query
/**
* 查詢數據
* @param array $param 查詢條件,條件數組或者條件SQL
* @param string $order 排序規則
* @param string $limit 獲取條數
* @param string $field 查詢的列,默認爲*
* @param string $group 分組規則
* @return json 數據列表
*/
public function actionQuery()
{
// 參數
$request = Yii::$app->request;
$param = $request->get('param', '');
$param = $this->formatParam($param);
$order = $request->get('order', false);
$limit = $request->get('limit', false);
$field = $request->get('field', '*');
$group = $request->get('group', false);
// 查詢
$response = $this->_dbBase->query($param, $order, $limit, $field, $group);
// 輸出
return $response;
}
QueryController
繼承自BaseController,提供Yii數據操作處理,對應客戶端Dg_Db_Yii類。
/**
* Yii\db\Query命令請求
*/
public function actionIndex()
{
$request = Yii::$app->request;
$_db = $request->get('_db', '');
$_call = $request->get('_call', array());
try {
$results = $this->execute(new \yii\db\Query(), $_call);
return $this->renderJson(SUCCESS, NO_ERROR, $results);
} catch (\Exception $e) {
return $this->renderJson(ERROR, $e->getCode(), $e->getMessage());
}
return $results;
}