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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)