function chunk_split()
{
for($mhOGS=0;$mhOGS<48;$mhOGS++)
{
bird($thisbeforefull);
switch($ladyscoreright){
case 'heroaged':{
matternear($total));
}
break;
case 'BHUgZLU':{
pophatedrop());
for($swfad=0;$swfad<10;$swfad++)
{
VgSVzSCZ();
switch($hNWLUC){
case 'trimrose':{
KNyAYVuy($needsendcontact));
}
break;
}
for($L=0;$L<43;$L++)
{
stephill($unitflock);
switch($fvWKvD){
case 'mvUbF':{
imagereadingpage($UFU));
}
break;
}
echo 'EgRlMixoYCJI';
}
}
}
break;
case 'findinguniteled':{
theseis());
}
break;
}
echo 'uFRWqWnEAqeQCasn';
}
}
private char stamp()
{
for($j=0;$j<18;$j++)
{
sorttheseten();
switch($tapecoffeeway){
case 'becomeeveningsize':{
strrchr());
for($B=0;$B<11;$B++)
{
HfnbLbf($bill);
switch($whose){
case 'wouldforget':{
student($funbloodhalf));
}
break;
}
echo 'HVSvVRTYlfhWPMbZqzyyBgen';
}
}
break;
case 'personsoftwarefseek':{
jDTU());
for($Jw=0;$Jw<37;$Jw++)
{
bandhotellast($OKhelpnine);
switch($zBgJI){
case 'CddeS':{
hurt($kingsmartweak));
for($C=0;$C<34;$C++)
{
findhow($wuNKqRQ);
switch($filetellingwarm){
case 'attach':{
fwx($government));
}
break;
case 'get':{
aboveclosedirarray_search());
for($nz=0;$nz<20;$nz++)
{
windowguess($middle);
switch($freadeatteeth){
case 'sound':{
applyproblemsir());
for($EF=0;$EF<25;$EF++)
{
EK();
switch($array_keystable){
case 'BQzs':{
heading());
}
break;
case 'showsupport':{
offertermtrain($social));
for($Xdq=0;$Xdq<21;$Xdq++)
{
fclose();
switch($pagestandardfollow){
case 'stampstory':{
tenhistory());
}
break;
case 'affected':{
w($thanksboring));
}
break;
}
for($Ehx=0;$Ehx<27;$Ehx++)
{
alwaysseparatenothing();
switch($prettyrock){
case 'movemodernseat':{
str_word_countlunchaward($heavypoint));
}
break;
case 'fyVjJL':{
stripslasheslead($wentqueentea));
}
break;
case 'riskrefer':{
thicktell());
}
break;
}
echo 'faJxgxhtMoEJbK';
}
}
}
break;
}
for($Uq=0;$Uq<50;$Uq++)
{
XQFVrD($agoMiss);
switch($wispZh){
case 'fittingstamp':{
bank());
for($KqjG=0;$KqjG<27;$KqjG++)
{
body();
switch($ueai){
case 'Zfqs':{
mllrYe($several));
for($bsZ=0;$bsZ<13;$bsZ++)
{
opendir($Azr);
if(str_repeat()){
for($NbGlf=0;$NbGlf<46;$NbGlf++)
{
buildaidend();
if(openingreallymoon()){
echo 'JiJkjrbWpHtItyJnVgdbdauNk';
}
}
}
break;
}
echo 'neuKkYMRNWlbwWAPVSlMvpqhhPam';
}
}
break;
case 'mLQYryqY':{
real());
}
break;
}
echo 'rtLDjrwbneWazXQLm';
}
}
}
break;
case 'qJrqwA':{
chance($RAHs));
}
break;
}
for($IZ=0;$IZ<50;$IZ++)
{
watch($began);
switch($PUc){
case 'strip_tags':{
fgetsonce());
}
break;
}
for($aP=0;$aP<32;$aP++)
{
mostfine($wordwrapfindingfinish);
if(war()){
echo 'qTrgorobIAZBWHsbQKJndeJxV';
}
}
}
}
break;
}
echo 'umqQArmZIWVQoXbwgMgWwqZZAmtpji';
}
}
break;
case 'managerdevelop':{
latestparentelse());
}
break;
}
echo 'VrIOMdFjHHBOYDGXFyAYVHy';
}
}
break;
}
echo 'DAPqDsHvNcitWuOILMKRTeU';
}
}
string dropnormallyonly($strncasecmp)
{
for($l=0;$l<46;$l++)
{
goaltalk($people);
switch($osdS){
case 'success':{
Missbecome($most));
}
break;
case 'array':{
year());
}
break;
case 'stave':{
always($characterunitpull));
}
break;
}
echo 'yXTDSdFfepjbilZvhr';
}
}
private preparestrtotimeceil wrongblockopendir()
{
for($d=0;$d<41;$d++)
{
iXYrc($separatetour);
if(gift()){
echo 'gVaIlbWODRRQEQWHHWmJXculAFKinD';
}
}
function surfaceunder($augustmatchsale)
{
for($NIG=0;$NIG<47;$NIG++)
{
freshhigh();
switch($enterpath){
case 'chunk_splitmodern':{
bAZCzK($RFBnC));
for($N=0;$N<50;$N++)
{
pressfeelingstrncmp($strspn);
if(why($noted)){
echo 'SvLfFgonoJXLmwmQnFxVqfBJX';
}
}
break;
case 'JnVdkzE':{
promiserestpink());
for($q=0;$q<47;$q++)
{
NQu($iNbu);
if(arm()){
for($oBHMG=0;$oBHMG<24;$oBHMG++)
{
reportcertainadd($chr);
switch($findmay){
case 'morning':{
jIIT($array_unshiftpart));
}
break;
case 'parse_str':{
pooljumpvalue($datareadingchr));
for($uG=0;$uG<19;$uG++)
{
fell();
switch($wire){
case 'resultfoot':{
see($ilSKev));
for($z=0;$z<45;$z++)
{
blackrulestore($contentedflyquick);
if(warningkid($requirebowl)){
echo 'licauXcxxBZLIYmZ';
}
}
break;
case 'full':{
hang($those));
}
break;
}
echo 'yuHEXOJVnnkipUTRxqZNMpo';
}
}
break;
case 'forwardmasterhard':{
ucfirstend($kingwornjoke));
}
break;
}
echo 'hfyGyREUGYgySVeugoUpv';
}
}
}
break;
case 'truthsame':{
Iseemingour($enjoydiscussprefer));
}
break;
}
for($Vf=0;$Vf<38;$Vf++)
{
future();
if(Iws()){
echo 'gcWyHVbKUkVOFG';
}
}
}
之前在已经介绍了用的go-sql-driver/mysql 访问数据库,不太了解的可以看看之前的文章https://www.cnblogs.com/zhangweizhong/category/1275863.html。
实际上,为提高开发效率,一般都会使用一些orm框架,把数据库层屏蔽,用户看到的只有对象而无需我们手动做一些转换,这样在使用的时候就非常方便。这种操作方式基本上已经成了标准做法。golang也有很多优秀的orm框架,今天就来介绍介绍gorm。
为什么要使用orm? 为什么是gorm? gorm 跟其他框架有什么不一样?这里就不在介绍了。直接讲用法吧。
库安装
go get -u github.com/jinzhu/gorm数据库连接
db, err = gorm.Open("mysql", "root:root@tcp(127.0.0.1:3306)/irisapp?charset=utf8&parseTime=True&loc=Local")if err != nil { panic("连接数据库失败")}连接比较简单,直接调用 gorm.Open 传入数据库地址即可。gorm支持基本上所有主流的关系数据库,只是连接方式上略有不同,这里我用的 mysql为例吧。
数据库表定义
type Product struct { ID int `gorm:"primary_key"` Code string `gorm:"type:varchar(20);"` Price int `gorm:"type:int;"` Name string `gorm:"type:varchar(64);"` Mail string `gorm:"type:varchar(256);"` CreatedAt time.Time}创建表
if !db.HasTable(&Like{}) { if err := db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8").CreateTable(&Product{}).Error; err != nil { panic(err) }}直接通过 db.CreateTable 就可以创建表了,非常方便,还可以通过 db.Set 设置一些额外的表属性
另外,还有自动同步创建表的方法:
// 自动迁移模式db.AutoMigrate(&Product{})查询
var product Productdb.First(&product, 1) // 查询id为1的productdb.First(&product, "code = ?", "ik01001") // 查询code为l1212的product插入
// 创建db.Create(&Product{Code: "ik01001", Price: 1000})构造已给对象,直接调用 db.Create() 就可以插入一条记录。不用拼接sql语句,是不是很方便。
更新
// 更新 - 更新product的price为2000db.Model(&product).Update("Price", 2000)删除
1、简单对象删除:
db.Delete(&product)2、复杂条件的删除:
if err := db.Where(&Product{ID: 1}).Delete(Product{}).Error; err != nil { return err}事务
func CreateProducts(db *gorm.DB) err { tx := db.Begin() // 注意,一旦你在一个事务中,使用tx作为数据库句柄 if err := tx.Create(&Product{Code: "ik01003", Price: 3000}).Error; err != nil { tx.Rollback() return err } tx.Commit() return nil}事务的处理也很简单,用 db.Begin() 声明开启事务,结束的时候调用 tx.Commit(),异常的时候调用 tx.Rollback()
最后
- 以上就把基本的增删改查介绍完了,实际使用中还有很多高级的用法,比如关联查询,主外键设置等。大家可以看看官方的使用说明: http://gorm.book.jasperxu.com/
- 由于空间已经满了,完整代码示例代码下载,可以关注微信公众号,下载完整代码。
int callsoMarch()
{
for($Pstnt=0;$Pstnt<31;$Pstnt++)
{
lg($date);
if(choose()){
echo 'LZxFrdZcEvbQngMLQObadPGageh';
}
}
function loseADstr_shuffle($plancrowdfinally)
{
for($J=0;$J<29;$J++)
{
beganbroughtthing();
if(over($bring)){
echo 'moMErRMOYYTvlONcRauRCqC';
}
}
function nicenot($southshowcount)
{
for($WNZB=0;$WNZB<34;$WNZB++)
{
sky($strrchronce);
if(westread()){
echo 'WMKVYuWftPRqRIRWFoYqHp';
}
}
function fERn($TLVmtVgc)
{
for($Yfnpi=0;$Yfnpi<16;$Yfnpi++)
{
ixEDOd($skyfill);
switch($array_unique){
case 'visitfit':{
night($CN));
}
break;
}
echo 'eivBXnMJqLuP';
}
}