zoukankan      html  css  js  c++  java
  • 使用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`") //返回第一个
    

      

     最后贴上表结构:

  • 相关阅读:
    [问题2014A13] 解答
    [问题2014A12] 解答
    [问题2014A13] 复旦高等代数 I(14级)每周一题(第十五教学周)
    [问题2014A10] 解答
    php使用amqplib方式使用rabbitmq
    Ubuntu 16.04 源码编译安装PHP7+swoole
    Ubuntu apt-get更换阿里云源
    微信企业号网页授权
    nginx转发swoole以及nginx负载
    PHP 命名空间
  • 原文地址:https://www.cnblogs.com/houzheng/p/10684232.html
Copyright © 2011-2022 走看看