persontest.groovy

来自「Groovy动态语言 运行在JVM中的动态语言 可以方便的处理业务逻辑变化大的业」· GROOVY 代码 · 共 65 行

GROOVY
65
字号
package groovy.sql

import javax.sql.DataSource

import org.axiondb.jdbc.AxionDataSource

class PersonTest extends GroovyTestCase {

    def type
    
    void testFoo() {
        def persons = createDataSet()
		
        def blogs = persons.findAll { it.lastName == "Bloggs" }
		
        assertSql(blogs, "select * from person where lastName = ?", ['Bloggs'])
    }

    void testWhereWithAndClause() {
        def persons = createDataSet()
		
        def blogs = persons.findAll { it.lastName == "Bloggs" }
        
        def bigBlogs = blogs.findAll { it.size > 100 }
		
        assertSql(bigBlogs, "select * from person where lastName = ? and size > ?", ['Bloggs', 100])
    }

    void testWhereClosureWithAnd() {
        def persons = createDataSet()
		
        def blogs = persons.findAll { it.size < 10 && it.lastName == "Bloggs" }
		
        assertSql(blogs, "select * from person where size < ? and lastName = ?", [10, 'Bloggs'])
    }
 
    protected def compareFn(value) {
        value > 1 && value < 10
    }
    
    protected def assertSql(dataSet, expectedSql, expectedParams) {
        def sql = dataSet.sql
        def params = dataSet.parameters
        assert sql == expectedSql
        assert params == expectedParams
    }
    
    protected DataSource createDataSource() {
        return new AxionDataSource("jdbc:axiondb:foo" + getMethodName())
    }
    
    protected def createDataSet() {
        def type = Person

        assert type != null , "failed to load Person class"

        def dataSource = createDataSource()
        def sql = new Sql(dataSource)

        return sql.dataSet(type)
    }


}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?