Grails 框架直接使用sql语句

Grails 框架直接使用sql语句

 

grails 框架可以通过SQL语句直接对数据库进行增删改查操作,还可以创建数据库表,具体实现如下:

 

参考文档:Groovy SQL

 

优秀推荐:Groovy的SQL模块

 

    def dataSource
    def dataSource_lookup  // 定义已知数据源

 

    @Transactional
    def insertBySql()
    {
        // 1.第一种插入方式    
        def product = new Product()
        product.name = "Grails"
        product.code = "1109"
        product.lookup.save()

        // 2.第二种插入方式
        def db = new groovy.sql.Sql(dataSource_lookup)
        def params = [29, 0, 'Groovy', '1105']
        db.execute "insert into product (id, version, name, code) values (?, ?, ?, ?)", params
        db.close()

        // 3.第三种插入方式
        def dbParams = [url:'jdbc:postgresql://127.0.0.1:5432/testDataBase2', user:'test', password:'test', driver:'org.postgresql.Driver']
        db = groovy.sql.Sql.newInstance(dbParams.url, dbParams.user, dbParams.password, dbParams.driver)
        def map = [id:20, version: 1, name:'Grails', code:'9999']
        db.execute "insert into product (id, version, name, code) values ($map.id, $map.version, $map.name, $map.code)"
        db.close()

        render product as JSON
    }
 
@Transactional
    def updateBySql()
    {
        def db = new groovy.sql.Sql(dataSource_lookup)
        db.executeUpdate "update product set name='antushengtuhua' where code='1105'"
        db.close()

        render "success"
    }

 

def queryBySql()
    {
        // 1.第一种查询
        def db = new groovy.sql.Sql(dataSource_lookup)
        db.eachRow('select * from product') { row ->
            println row
        }

        // 2.第一种查询,支持分页
        db.eachRow('select * from product', 2, 2) 
        {
            println it
        }

        // 3.第二种查询
        def rows = db.rows("select * from product where name like 'Gra%'")
        println rows.join('\n')

        db.close()

        render "success"
    }

 

@Transactional
    def deleteBySql()
    {
        def db = new groovy.sql.Sql(dataSource_lookup)
        db.execute('delete from product')
        db.close()

        render "success"
    }

 

@Transactional
    def createTable()
    {
        def db = new groovy.sql.Sql(dataSource_lookup)
        db.execute ('''
            create table project (
                id integer not null,
                name varchar(50),
                url varchar(100)
            );
        ''')
        db.close()

        render "success"
    }

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值