Groovy笔记(9)_GroovySql

Groovy笔记(9)_GroovySql,第1张

概述GroovySql概述     1、GSql结合利用闭包和迭代器,把资源管理的负担转移到Groovy框架本身,从而简化JDBC编程 2、不用关闭Conne,也不用关闭ResultSet 3、Groovy把迭代器编程隐含的,使用起来更简单。      def coll = ["groovy","grails","java"]      coll.each{tiem -> println item}

Groovysql概述

 

 

1、Gsql结合利用闭包和迭代器,把资源管理的负担转移到Groovy框架本身,从而简化JDBC编程

2、不用关闭Conne,也不用关闭ResultSet

3、Groovy把迭代器编程隐含的,使用起来更简单。

     def coll = ["groovy","grails","java"]

     coll.each{tIEm -> println item}

 

 

 

建库建表

 

1、创建MysqL数据库groovytoysstore

      show databases;

      create database groovysstore

      character set utf8

 

2、建表toys,包含toyname,unitPrice 两列

     use groovytoysstore

     create table toys(toyname varchar(50) not null,

                                 unitPrice varchar(20))

 

 

建立数据库连接

 

1、import groovy.sql.*

     def db = 'jdbc:MysqL:  //主机/数据库

                    ?useUnicode=true&characterEnCoding=UTF-8'

     def user = 'root'

     def password = 'clat'

     def driver = 'com.MysqL.jdbc.Driver'

    

     def sql = sql.newInstahnce(db,user,password,driver)

      // 需要把MysqL的驱动jar包拷贝到项目lib目录下

 

 

 

数据库CRUD

 

1、sql.execute("delete from toys")

     sql.execute("insert into toys values('toy1','100')")

     sql.eachRow("select * from toys"){toy ->

     println '/t/t'+toy.toyname + '/t' +toy.unitPrice}

 

2、def searchToyname = "toy1"

     sql.eachRow("select * from toys where toyname =?",[searchToyname]){toy ->

             println '/t/t' + toy.toyname +'/t' +toy.unitPrice}

 

3、def updatetoyname = 'toy1'

     def updateUnitPrice = '1000'

      sql.execute("update toys set unitPrice= ? where toyname =? ",[updateUnitPrice,updatetoyname])

 

 

*** 作DataSet(简化 *** 作)

 

1、DataSet类是sql类的子类(可以用Jad查看)

2、def toys = sql.dataSet('toys')

      //dataSet()参数是表名

      public DataSet dataSet(String tablename){

          return new DataSet(this,talbe);

      }

3、toys.add(toyname:'toy8',unitPrice:'800')

     //public voID add(Map values) throws sqlException

4、toys.each{toy ->

            println toy.toyname + ':' + toy.unitPrice}

 

5、例子

     def sql = sql.newInstance(db,driver)

     def toys = sql.dataSet('toys')

     def List = toys.rows()  //返回列表

     println List.class

     List.each{      //遍历列表

         println it

     }

      def t = toys.firstRow()    //获取第一行 ,lastRow()最后一行

      println t

 

 

 

简单OR MapPing

 

 

1、sqlquery抽象类(使用模板方法模式)

     abstract class sqlquery{

         def sql ;   def query

         def sqlquery(sql,query){

               this.sql = sql;  this.query = query

          }

         def abstract mapRow(row)    //映射方法先定义,由子类实现

         def execute(){

              def rowsList = sql.rows(query)

              def results = []

              def size = rowsList.size()

              0.upto(size - 1){ index ->

                  results << this.mapRow(rowsList[index])

              }

              return results

          }

     }

2、class Toyquery extends sqlquery{        //子类实现mapRow()方法

            def Toyquery(sql){

                    super(sql,'select * from toys')

             }

            def mapRow(row){

                    def acc = new Toy(toyname: row.getProperty("toyname"),

                                                  unitPrice: row.getProperty("unitPrice"))

                return acc

             }

     }

 

3、使用上面的类 完成简单ORM  ,数据库 -》 对象

 

    def db = 'jdbc:MysqL://localhost/groovytoysstore?useUnicode=true&characterEnCoding=UTF-8'

    def  user= 'root'

    def password = 'clat'

    def driver = 'com.myql.jdbc.Driver'

    def sql = sql.newInstance(db,driver)

  

    def toyquery = new Toyquery(sql)

    def toys = toyquery.execute()

    toys.each{ toy -> println toy.toyname}

总结

以上是内存溢出为你收集整理的Groovy笔记(9)_GroovySql全部内容,希望文章能够帮你解决Groovy笔记(9)_GroovySql所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1270782.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存