2012-12-30 65 views
2

有誰知道是否可以將ORMLite與Groovy類一起使用?Ormlite和Groovy可能嗎?

鑑於ORMLite使用Java反射,它對字節碼起作用,我想它會是合格的。

任何有這種方式使用ORMLite的經驗的人?如果您有任何建議或意見?

我知道我仍然可以從Groovy訪問Java類,所以這是一個倒退。但是,我很好奇。

回答

1

我試過5.0的最新版本(在寫作時),它使用Groovy(至少2.4.4)的作品,這裏是一個完整的MySQL類似的 - 小位shorter-例如(文件名Tester.groovy):

@GrabConfig(systemClassLoader=true) 
@Grab(group='mysql', module='mysql-connector-java', version='5.1.6') 

import com.j256.ormlite.jdbc.JdbcConnectionSource 
import com.j256.ormlite.dao.Dao 
import com.j256.ormlite.dao.DaoManager 
import com.j256.ormlite.field.DatabaseField 
import com.j256.ormlite.table.DatabaseTable 


class Tester { 
    static main(args) { 
     def url = "jdbc:mysql://localhost/sample?user=root&password=" 
     def connSource = new JdbcConnectionSource(url) 
     Dao<Person, Integer> personDao = DaoManager.createDao(connSource, Person) 
     personDao.queryForAll().each { person -> 
      println "${person.name}, ${person.age}, ${person.comment}" 
     } 
     connSource.close() 
    } 

} 

@DatabaseTable(tableName = "person") 
class Person { 

    @DatabaseField(id = true) 
    int id 

    @DatabaseField(columnName = "age") 
    int age 

    @DatabaseField(columnName = "name") 
    String name 

    @DatabaseField(columnName = "comment") 
    String comment 
} 

命令行亞軍:

groovy -cp "ormlite-jdbc-5.0.jar;ormlite-core-5.0.jar" Tester.groovy 

希望得到這個幫助。

+0

感謝您花時間回答這樣一箇舊帖子!我會檢查出來的。 – Anthony

3

我剛開始使用ORMLite,但至少版本4.48作品使用Groovy:

@DatabaseTable(tableName = "people") 
class Person { 

    @DatabaseField(id = true) 
    int id 

    @DatabaseField(columnName = "first_name") 
    String firstName 

    @DatabaseField(columnName = "last_name") 
    String lastName 
} 

class Tester { 
    def static main(String[] args) { 
     def url = "jdbc:..." // elided 

     def connSource = new JdbcConnectionSource(url) 
     Dao<Person, Integer> personDao = DaoManager.createDao(connSource, Person.class) 
     def person = personDao.queryForId(1) 
     println("${person.lastName}, ${person.firstName}") // prints 'Smith, Joe' 
     connSource.close() 
    } 
}