Springboot÷kotlin&java

前書き

Javaがオブジェクト指向プログラミング言語であることは誰もが知っていますが、実際には、コードの記述にはある程度の複雑さがあります。コード開発の利便性を高めるためにjdk8が後で登場しても、それでも十分に簡潔ではありません。強力なjvmであってもは実行環境として使用され、すべての主要な環境では困難です。相互に実行され、Googleはkotlin言語の開発を提唱すると同時に、プラグインなしで開発できるAndroidに組み込まれています。言語の長所と短所についてはあまり紹介しません。各言語にはそれぞれの短所と長所があり、主にプロジェクトの状況に応じて実行されます。しかし実際には、私はまだJavaを使用することをお勧めします。結局のところ、Javaの方が一般的であり、より多くの学習教材があります。次に、KotlinのRestFulプロジェクトを構築するためにGradleに住んでいます。

技術システム入門

  1. 新しいバージョンのアイデアバージョンツールにはkotlinプラグインがあるため、このアプリケーション編集ツールはアイデアです。
  2. データベースはdockerのmysqlサービスです
  3. 基本的な環境はjdk8です
  4. 技術的枠組みとしてのSpringBoot

作業手順

mysql&jdkをビルドします

Mysqlは
、dockerのmysqlスタートアップファイルdocker-compose.yamlをビルドします。

version: '2'

services:
  mysql:
    image: mysql:5.7
    command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci]
    environment:
      MYSQL_ROOT_PASSWORD: root
      TZ: Asia/Shanghai
    ports:
      - "3307:3306"
    volumes: 
      - "~/data/mysql:/var/lib/mysql"

上記のファイルを(タッチドッカ-compose.yaml)を作成し、カレントディレクトリにmysqlのサービスを開始ドッキングウィンドウ・コンアップ-d
JDKの設定
JAVA_HOME =あなたのJDKのホームディレクトリを
PATH = JAVAHOME / binに:JAVA_HOME / binに:J A V AHO M E / b i nパス:。
CLASSPATH =JAVAHOME / lib / tools。jar:JAVA_HOME / lib / tools.jar:J A V AHO M E / Lのi B / T O O L S j a r JAVA_HOME / lib /dt.jar:。
エクスポートJAVA_HOME
エクスポートクラスパス

スプリングブーツを初期化する

次の図に示すように、公式Webサイトの初期化メソッドのリンク
ここに画像の説明を挿入
は次のとおりです。gradlerパッケージは次のようにロードされます。

	implementation("org.springframework.boot:spring-boot-starter-data-jpa")
	implementation("org.springframework.boot:spring-boot-starter-web")
	implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
	implementation("org.jetbrains.kotlin:kotlin-reflect")
	implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
	implementation("org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final")
	runtimeOnly("mysql:mysql-connector-java")
	testImplementation("org.springframework.boot:spring-boot-starter-test")

プロジェクトパッケージの構造

ここに画像の説明を挿入

アプリケーションファイル

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3307/kotlin
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    dbcp2:
      test-while-idle: true
      validation-query: SELECT 1
  jpa:
    database: MYSQL
    show-sql: true
    database-platform: org.hibernate.dialect.MySQL5Dialect
    hibernate:
      naming:
        physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy

クラスを開始し、スイープパスを追加しますここに画像の説明を挿入

ファイルデータクラス

// Config 类
package com.lgh.run.config
import org.springframework.boot.autoconfigure.domain.EntityScan
import org.springframework.context.annotation.ComponentScan
import org.springframework.data.jpa.repository.config.EnableJpaRepositories
@ComponentScan("com.lgh")
@EntityScan("com.lgh.entity")
@EnableJpaRepositories("com.lgh.repository")
class Config

// DemoApplication 类
package com.lgh.run
import com.lgh.run.config.Config
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.context.annotation.Import
@SpringBootApplication
@Import(Config::class)
class DemoApplication
fun main(args: Array<String>) {
    
    
	runApplication<DemoApplication>(*args)
}

// User
package com.lgh.entity
import javax.persistence.*
@Entity
class User(
        @Id @GeneratedValue(strategy = GenerationType.AUTO) val id:Long?,
        @Column(name = "user_id") val userId:Long?,
        @Column(name = "user_name") val userName:String?
)

// UserRepository
package com.lgh.repository
import com.lgh.entity.User
import org.springframework.data.repository.CrudRepository
interface UserRepository: CrudRepository<User,Long>{
    
    
    fun findByUserNameLike(uName:String):Collection<User>?
    fun findByUserId(uId:Long):User?
}

// UserServiceImpl 类
package com.lgh.service
import com.lgh.entity.User
import com.lgh.repository.UserRepository
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
@Service
class UserServiceImpl {
    
    
    @Autowired
    val userRepository: UserRepository? = null
    fun findByUName(uName: String): Collection<User>? = userRepository?.findByUserNameLike(uName?.plus("%"))
    fun findByUId(id:Long): User? = userRepository?.findByUserId(id)
}

# UserRepository
package com.lgh.repository
import com.lgh.entity.User
import org.springframework.data.repository.CrudRepository
interface UserRepository: CrudRepository<User,Long>{
    
    
    fun findByUserNameLike(uName:String):Collection<User>?
    fun findByUserId(uId:Long):User?
}

// UserController
package com.lgh.controller
import com.lgh.entity.User
import com.lgh.service.UserServiceImpl
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
@RestController
@RequestMapping("/users")
class UserController {
    
    
    @Autowired
    val userService: UserServiceImpl? = null
    @GetMapping("/id/{id}")
    fun findUserById(@PathVariable("id") id: Long): User? = userService?.findByUId(id)
    @GetMapping("/name/{userName}")
    fun  findByUserName(@PathVariable("userName") userName:String): Collection<User>? = userService?.findByUName(userName)
}

送信元アドレス

github

まとめと考察

要約して反映するために視聴者に任せてください!

おすすめ

転載: blog.csdn.net/soft_z1302/article/details/112388727