springboot 통합 kotlin + ebean orm, 자바 와 kotlin 혼합 개발 웹
demo github 주소:https://github.com/LorinHan/kotlin_and_ebean
1. Idea 에서 springboot 프로젝트 를 만 들 고 웹 - > springboot 웹 을 선택 하 십시오.
2. kotlin 의존 항목 및 플러그 인 설정 가 져 오기
1.8
1.3.60
org.jetbrains.kotlin
kotlin-stdlib-jdk8
${kotlin.version}
org.jetbrains.kotlin
kotlin-reflect
${kotlin.version}
org.jetbrains.kotlin
kotlin-stdlib
${kotlin.version}
kotlin-maven-plugin
1.8
org.jetbrains.kotlin
${kotlin.version}
compile
compile
compile
${project.basedir}/src/main/java
test-compile
test-compile
test-compile
org.jetbrains.kotlin
kotlin-maven-noarg
${kotlin.version}
org.jetbrains.kotlin
kotlin-maven-allopen
${kotlin.version}
3. eBean 의존 항목 가 져 오기
mysql
mysql-connector-java
io.ebean
persistence-api
2.2.1
io.ebean
ebean
12.1.8
io.ebean
ebean-querybean
12.1.8
io.ebean
querybean-generator
12.1.8
provided
io.ebean
ebean-test
12.1.8
test
io.repaint.maven
tiles-maven-plugin
2.12
true
io.ebean.tile:enhancement:12.1.8
io.ebean.tile:kotlin-kapt:1.5
4. 완전한 pom 파일:
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.2.RELEASE
com.example
kotlin_and_ebean
0.0.1-SNAPSHOT
kotlin_and_ebean
Demo project for Spring Boot
UTF-8
UTF-8
1.8
1.3.60
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.jetbrains.kotlin
kotlin-stdlib-jdk8
${kotlin.version}
org.jetbrains.kotlin
kotlin-reflect
${kotlin.version}
org.jetbrains.kotlin
kotlin-stdlib
${kotlin.version}
mysql
mysql-connector-java
8.0.18
io.ebean
persistence-api
2.2.1
io.ebean
ebean
12.1.8
io.ebean
ebean-querybean
12.1.8
io.ebean
querybean-generator
12.1.8
provided
io.ebean
ebean-test
12.1.8
test
org.springframework.boot
spring-boot-maven-plugin
com.example.kotlin_and_ebean.KotlinAndEbeanApplication
kotlin-maven-plugin
1.8
org.jetbrains.kotlin
${kotlin.version}
compile
compile
compile
${project.basedir}/src/main/java
test-compile
test-compile
test-compile
org.jetbrains.kotlin
kotlin-maven-noarg
${kotlin.version}
org.jetbrains.kotlin
kotlin-maven-allopen
${kotlin.version}
org.apache.maven.plugins
maven-compiler-plugin
compile
compile
compile
testCompile
test-compile
testCompile
io.repaint.maven
tiles-maven-plugin
2.12
true
io.ebean.tile:enhancement:12.1.8
io.ebean.tile:kotlin-kapt:1.5
5. Idea 설정 settings 의 plugins 를 열 고 ebean 11 을 찾 아 Ebean 11 Enhancement 을 추가 한 다음 Idea 를 다시 시작 합 니 다. 메뉴 표시 줄 의 Build 에서 Ebean 11 Enhancement 옵션 을 보고 선택 하 십시오.
6. resources 폴 더 에 ebean. properties 를 새로 만 들 고 설정 을 추가 합 니 다.
ebean.search.packages= com.example
# 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/springboot_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
# mysql8 , mysql5, mysql5 jar, cj, com.mysql.jdbc.Driver
datasource.db.databaseDriver=com.mysql.cj.jdbc.Driver
7. eBean 을 만 드 는 공장 류
import io.ebean.EbeanServer;
import io.ebean.EbeanServerFactory;
import io.ebean.config.ServerConfig;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.stereotype.Component;
@Component
public class MyEbeanServerFactory implements FactoryBean {
public EbeanServer getObject() throws Exception {
return createEbeanServer();
}
public Class> getObjectType() {
return EbeanServer.class;
}
public boolean isSingleton() {
return true;
}
/**
* Create a EbeanServer instance.
*/
private EbeanServer createEbeanServer() {
ServerConfig config = new ServerConfig();
config.setName("db");
// load configuration from ebean.properties, resources ebean.properties
config.loadFromProperties();
config.setDefaultServer(true);
// other programmatic configuration
return EbeanServerFactory.create(config);
}
}
8. 실체 클래스 만 들 기
import javax.persistence.Entity
import javax.persistence.Id
import javax.persistence.Table
@Entity
@Table(name = "t_author")
class Author{
@Id
var id: Long? = null
var realName: String? = null
var nickName: String? = null
}
9. kotlin 은 Ebean 을 사용 합 니 다. 여 기 는 services 를 쓰 지 않 고 controller 를 직접 씁 니 다.
import com.example.kotlin_and_ebean.domain.Author
import io.ebean.EbeanServer
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestMethod
import org.springframework.web.bind.annotation.RestController
@RestController
class EbeanController {
@Autowired
private lateinit var ebeanServer: EbeanServer
@RequestMapping(value = ["/ebean"], method = [RequestMethod.GET])
fun getAuthorList(): String {
//
val author = Author()
// author.id = 10L
// author.realName = "test"
// author.nickName = "test"
// ebeanServer.save(author)
//
var find = ebeanServer.find(Author::class.java, 1)
println(find?.nickName)
return "ebean"
}
@GetMapping("/testEbean")
fun testEbean(): List {
/*
* : QAuthor , , ,
* ,maven compile , target domain query ,
* */
val authors = QAuthor().setMaxRows(2).findList() // BeanList
authors.forEach{
println(it.id)
}
for(item in authors) {
println(item.nickName)
}
return authors
}
@GetMapping("/testNative")
fun testNative(): String {
var findNative = ebeanServer.sqlQuery("select id, real_name from t_author where id <= 2;").findList()
// List, toString json
println(findNative is List)
return findNative.toString()
}
@GetMapping("/testKotlin")
fun testKotlin(): String {
var arr = intArrayOf(1, 2, 3)
println(arr[0])
var arrList = arrayListOf(1, 2, 3)
arrList.add(4)
println(arrList)
var str = "abc"
str += "$str :${str.length * 2}"
println(str)
arr[0] = 2
when(arr[0]) {
1 -> println("nice")
else -> println("fuck")
}
println("==========")
if(3 in arr) {
println("3 in arr!")
}
// for((item, index) in arrList.withIndex()) {
// println("$item $index")
// }
arrList.withIndex().forEach{ print(it)}
var obj = hashMapOf("a" to 1, "b" to 2)
println(obj)
return "test kotlin"
}
}
10. 자바 는 Ebean 을 사용 합 니 다. 여 기 는 services 를 쓰 지 않 고 contrller 를 직접 씁 니 다.
@GetMapping("/test2")
public String test2() {
Author author = ebeanServer.find(Author.class, 1);
System.out.println(author.getNickName());
return "ok";
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.