ebean的使用教程

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

从2018年,一直在做服务器相关的技术积累。在公司,从一个客户端程序员,主动要求做服务器任务,希望借机提升自己的服务器技术应用能力。私下一直研究的是vert.x的相关技术,奈何公司使用的是php + yii的解决方案。只能静下心来,吸取公司的方案中的一些优势,比如,yii的 "Query Builder"是非常高效方便……翻阅各种资料,发现了ebean。国内的大部分文档都吹嘘它高效,并没有一份入门级的使用教程。本文,是笔者的一些使用心得。分享于此,希望对大家学习ebean有所帮助。

一、使用的环境介绍

idea + gradle + kotlin

二、idea的ebean插件安装 (必须做的)

安装方法:

  • 打开idea, File > Settings > Plugins > "Ebean 11" 来安装插件,如图所示:

ebean的使用教程_第1张图片

  • 打开bean增加工具,确保build下的 "Ebean XXXX"前面有一个小勾勾, 如图所示:

ebean的使用教程_第2张图片

注:如果你没有做这步操作,运行的时候,会抛出 “io.ebean.config.BeanNotEnhancedException”的异常。

Exception in thread "main" io.ebean.config.BeanNotEnhancedException: Bean class org.example.domain.channel_statistics_ret is not enhanced? Check packages specified in ebean.mf. If you are running in IDEA or Eclipse check that the enhancement plugin is installed. See https://ebean.io/docs/trouble-shooting#not-enhanced
	at io.ebeaninternal.server.deploy.BeanDescriptorManager.setEntityBeanClass(BeanDescriptorManager.java:1581)
	at io.ebeaninternal.server.deploy.BeanDescriptorManager.createByteCode(BeanDescriptorManager.java:1446)
	at io.ebeaninternal.server.deploy.BeanDescriptorManager.readDeployAssociations(BeanDescriptorManager.java:1355)
	at io.ebeaninternal.server.deploy.BeanDescriptorManager.readEntityDeploymentAssociations(BeanDescriptorManager.java:770)
	at io.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:374)
	at io.ebeaninternal.server.core.InternalConfiguration.(InternalConfiguration.java:197)
	at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:124)
	at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:35)
	at io.ebean.EbeanServerFactory.createInternal(EbeanServerFactory.java:109)
	at io.ebean.EbeanServerFactory.create(EbeanServerFactory.java:70)
	at MainKt.main(main.kt:26)
	at MainKt.main(main.kt)

三、修改Gradle,配置依赖 (必须做的)

参考:

  • https://ebean.io/docs/getting-started/dependencies
  • https://ebean.io/docs/getting-started/gradle

1、在gradle中加入slf4j的依赖。

compile 'org.slf4j:slf4j-api:1.7.26'
compile 'org.slf4j:slf4j-nop:1.7.26'

注: 我这里是使用的slf4j-nop,还有什么slf4j-simple之类的也可以使用,但是千万不要在您的gradle依赖中同时出现。

2、 ebean及jdbc的依赖

compile 'io.ebean:ebean:11.39.1'
compile 'mysql:mysql-connector-java:8.0.11'

注:我这里是mysql的jdbc依赖,您根据需求安装适合您的依赖

3、如果需要使用Ebean的 Query beansa功能 (可选,笔者建议不要加上)

笔者认为这个会使代码出现更多隐晦的东西,所以不建议使用。比如你的实体类Customer,它会自动生成一个QCustomer方便查询。 如果您知道那是啥,且强烈要使用可以参考:https://ebean.io/docs/getting-started/gradle-querybeans 以及完整的gradle的配置事例: https://github.com/ebean-orm-examples/example-gradle-kotlin/blob/master/build.gradle

4、一些易于调试的东西(可选,但强烈建议加上)

ebean {
    debugLevel = 1
}

test {
    testLogging.showStandardStreams = true
    testLogging.exceptionFormat = 'full'
}

附我配置的完整代码:

group 'org.huoyaojing'
version '1.0-SNAPSHOT'

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath "io.ebean:ebean-gradle-plugin:11.27.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.11"
    }
}

apply plugin: 'idea'
apply plugin: 'io.ebean'
apply plugin: "org.jetbrains.kotlin.jvm"

repositories {
    mavenCentral()
}

ebean {
    debugLevel = 1
}

test {
    testLogging.showStandardStreams = true
    testLogging.exceptionFormat = 'full'
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    compile 'io.ebean:ebean:11.39.1'

//    compile 'org.postgresql:postgresql:42.2.2'
    compile  'io.ebean.test:ebean-test-config:11.39.1'
    compile 'mysql:mysql-connector-java:8.0.11'

    compile 'org.slf4j:slf4j-api:1.7.26'
    compile 'org.slf4j:slf4j-nop:1.7.26'
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

四、构建实体类

参考:https://ebean.io/docs/getting-started/kotlin-first-entity

五、配置ebean

配置ebean的方法有很多,可以是直接纯代码,也可以采用配合配置文件来配置

1、纯代码配置

    var cfg =  ServerConfig()

    var properties =  Properties()
    properties.put("ebean.db.ddl.generate", "true")
    properties.put("ebean.db.ddl.run", "false")     //注意,如果这里设置了true,会删除掉你原来的数据,然后再创建表

    properties.put("datasource.db.username", "您的db用户名")
    properties.put("datasource.db.password", "您的DB密码")
    properties.put("datasource.db.databaseUrl","jdbc:mysql://10.0.6.211:3306/test")  //db的路径
    properties.put("datasource.db.databaseDriver", "com.mysql.cj.jdbc.Driver")    //mysql的jdbc驱动

    cfg.loadFromProperties(properties);
    var server = EbeanServerFactory.create(cfg);

2、通过ebean.properties进行加载

ServerConfig.loadFromProperties() 可以自动从ebean.properties加载配置。 您可以在resources里添加一个ebean.properties定义如下的文件

ebean.search.packages= com.demo
# the name of the default server
datasource.default=db

## define these in external properties ...

datasource.db.username=root
datasource.db.password=root
datasource.db.databaseUrl=jdbc:mysql://localhost:3306/test?useSSL=false
datasource.db.databaseDriver=com.mysql.jdbc.Driver

3、默认数据

将某个配置成数据库默认配置,或者如配置文件那样子

ServerConfig config = new ServerConfig();

config.setDefaultServer(true);

默认情况下使用 Ebean.getDefaultServer() 或者 Ebean.getServer(null)使用的是默认数据库配置信息。

当需要使用指定的数据库,例上面所配置的db,则可以用 Ebean.getServer("db")

转载于:https://my.oschina.net/jjyuangu/blog/3055995

你可能感兴趣的:(ebean的使用教程)