2

有谁知道是否可以将 ORMLite 与 Groovy 类一起使用?

鉴于 ORMLite 使用适用于字节码的 Java 反射,我想这将是合格的。

任何人都以这种方式使用 ORMLite 的经验?如果您有任何建议或意见?

我知道我仍然可以从 Groovy 访问 Java 类,所以这是一个回退。但见鬼,我很好奇。

4

2 回答 2

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()
    }
}
于 2014-09-08T16:19:12.533 回答
1

我尝试了最新版本 5.0(在写作时),它适用于 Groovy(至少 2.4.4),这是一个完整的 MySQL 类似的 - 有点短 - 示例(文件名 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

希望这有帮助。

于 2017-10-05T15:05:34.393 回答