• 使用Groovy的sql模块操作mysql进行多种查询


    接数据库,这里要创建一个sql实例来操作数据库,必须加载jdbc驱动包,使用两个注解,否则会报错:

    import groovy.sql.Sql
    url='jdbc:mysql://localhost:3307/test?useUnicode=true&characterEncoding=utf8'
    driver='com.mysql.jdbc.Driver'
    username='root'
    passwd='123456'
    //可以指定maven仓库
    //@GrabResolver(name = 'aliyun', root = 'http://maven.aliyun.com/nexus/content/groups/public/')
    //加载数据库连接驱动包
    @Grab('mysql:mysql-connector-java:5.1.25')
    @GrabConfig(systemClassLoader = true)
    //创建sql实例
    def sql = Sql.newInstance(url, username, passwd, driver)
    

     查询:

    eachRow: 对结果在闭包中进行处理:

    sql.eachRow("select * from `user`") {
        println it[0]  //可以按表字段从左到右依次下标访问
        println it.name  //直接按字段名访问
    }
    //支持元数据闭包显示
    sql.eachRow("select * from `user`",{ meta->
        //元数据闭包只会调用一次
        meta.columnCount.times {
            print meta.getColumnName(it+1)+"  "
            print meta.getColumnClassName(it+1)+"  "
            print meta.getColumnDisplaySize(it+1)+"  "
            print meta.getColumnType(it+1)+"---"
            println meta.getColumnTypeName(it+1)
        }
    }) {
        //可以按表字段从左到右依次下标访问或者字段名字访问
        println it[0]+"  "+it.name
    }
    

      可以看到输出:

    还有rows等查询方法,支持非常多的重载方法,可以根据需求传入各种参数,和jdbc用法基本都一样,比如:

    println sql.rows(['id':3],"select * from `user` where id>:id").size()  //map参数
    println sql.rows("select * from `user` where id>?",[3]).size() // list参数
    println sql.firstRow("select * from `user`") //返回第一个
    

      

     最后贴上表结构:

  • 相关阅读:
    《精通Ext JS 》
    《OpenStack部署实践》
    《方寸指间——移动设计实战手册》
    《产品经理那些事儿》
    C# 基于Aspose.Cells的数据导出到Excel
    mongodb中直接根据某个字段更新另外一个字段值
    C# mongodb中内嵌文档数组条件查询
    c# 在mongo中查询经纬度范围
    (转)MySql 获取所有级联父级或所有级联子级
    mongodb对数组元素及内嵌文档进行增删改查操作(转)
  • 原文地址:https://www.cnblogs.com/houzheng/p/10684232.html
Copyright © 2020-2023  润新知