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`") //返回第一个
    

      

     最后贴上表结构:

  • 相关阅读:
    课程开始的第一次作业
    第四次寒假作业——实现五种语言的选择
    关于改良报告与学习总结(Ⅰ)
    Vue路由守卫之路由独享守卫
    Vue路由守卫之组件内路由守卫
    Vue中如何插入m3u8格式视频,3分钟学会!
    Vue中如何使用less
    第一章 初识爬虫
    【JQuery】注册中实现图片预览
    【Python】多种方式实现生成验证码
  • 原文地址:https://www.cnblogs.com/houzheng/p/10684232.html
Copyright © 2011-2022 走看看