go xorm 优雅方式实现动态条件查询

admin5年前程序心得1229
 var persons []domain.Person
 session := engine.Where("1=1")
 if param.ActivityId != nil {
        session = session.And("activity_id = ?", param.ActivityId)
}
if param.Sex != nil {
        session = session.And("sex = ?", param.Sex)
}
if param.Num != nil {
        session = session.And("num = ?", param.Num)
}
if param.Name != "" {
        name := "%" + param.Name + "%"
        session = session.And("name like ?", name)
}

//注意xorm Count、Find方法执行会自动closeSession,直接使用上边的session,第二条sql的where条件会丢失,
//所以通过 session.Conds()提取where条件,放到各自的session进行执行

cnt,_:=engine.Where(session.Conds()).Count(&persons)
err := engine.Where(session.Conds()).OrderBy("create_time desc").Limit(10, 0).Find(&persons)


分享到:

相关文章

hadoop-kerberos

kerberos客户端配置krb5.conf配置选项参考: https://linux.die.net/man/5/krb5.conf配置kerberos多用户ticket缓存名字1 2#...

Thinkphp3.2.x 多图上传几个注意点

1、<form enctype="multipart/form-data">2、<form enctype="multipart/f...

Layui关闭弹出层,实现静态无感刷新父页面table

父页面:嵌入滚动条位置记录:    <input type="hidden" name="top&quo...

lnmp 安装Swoole扩展

lnmp 安装Swoole扩展

下载swoole扩展逐渐,附件:swoole-src-master.zipgithub地址:https://github.com/swoole/swoole-src.git安装swoole:cd&nb...

element table 表格添加行,删除行记录

  <el-table             &n...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。