开发Go项目时,发现将数据表映射到结构体时,当表的字段非常多时,一个个写非常麻烦,于是自己用php代码简单写了一个demo。为什么用php呢,因为php是最好的语言,哈哈,当然不是这个原因了,因为解释语言运行比较方便。
<?php
$table = 'user_info';
$db = new \PDO('mysql:host=127.0.0.1;dbname=test', 'root', 'root');
$sql = sprintf('desc ' . $table);
$colums = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC);
$str = sprintf('
type %s struct{', str_replace(' ', '', ucwords(str_replace('_', ' ', $table))));
foreach($colums as $colum) {
$name = str_replace(' ', '', ucwords(str_replace('_', ' ', $colum['Field'])));
if (strpos($colum['Type'], 'int') !== false) {
$type = 'int';
} elseif (strpos($colum['Type'], 'char') !== false || strpos($colum['Type'], 'text') !== false) {
$type = 'string';
} else {
var_dump($colum['Type']);die;
$type = 'time.Time';
}
$str = sprintf($str . '
%s %s', $name, $type);
}
$str = $str . '
}
';
var_export($str);
运行结果类似下面: 当然这是一个非常简单的demo,还说不上好用或者高大上,能用实用就行,有兴趣的同学也可以直接编写一个go包,自动生成代码
|