使用Intellij在SpringBoot(Java)+ Gradle + MySQL + Doma2中进行简单设置的项目创建

首先

在使用SpringBoot + MySQL创建应用程序时,我通常使用Spring Data JPA作为访问数据库的对象关系映射器(ORM)。但是,我个人觉得它很难用,并且经常感到很不方便。然而,我听说了一个名为Doma2的ORM映射器很好,所以这次我想尝试使用它。由于在初始配置方面遇到了一些困难,所以我打算在这方面重点写一下(不包括控制器和服务的实现)。

由于关于如何在Gradle中导入Doma2的文章相对较少,希望这篇文章能对您有所帮助!
※我本来希望使用Kotlin进行解释,但因为遇到了困难,所以打算以Java来解释(笑)。

环境

SpringBoot 2.7.16
Java 11
MySQL 8.0.32
IntelliJ IDEA 2021.3.2

SpringBoot 2.7.16
Java 11
MySQL 8.0.32
IntelliJ IDEA 2021.3.2

请在事先使用Spring Initializr等工具准备好SpringBoot项目。

Doma2是什么意思?

    • JavaのDBアクセスフレームワーク

 

    • 注釈処理を使用して コンパイル時 にコードの生成やコードの検証を行う

 

    • データベース上のカラムの値を振る舞いを持った Java オブジェクトにマッピングできる

 

    2-way SQL と呼ばれる SQL テンプレートを利用できる

在 build.gradle 文件中添加 Doma 2 的配置。

让我们首先在build.gradle中添加以下配置。

plugins {
	id 'java'
	id 'org.springframework.boot' version '2.7.16'
	id 'io.spring.dependency-management' version '1.0.15.RELEASE'
    // ↓追加
	id 'org.seasar.doma.compile' version '1.1.0'
}

dependencies {
    // ↓追加
	implementation 'org.seasar.doma.boot:doma-spring-boot-starter:1.4.0'
    // ↓追加
	annotationProcessor 'org.seasar.doma:doma-processor:2.35.0'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	runtimeOnly 'com.mysql:mysql-connector-j'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

如果进行了追加,请进行构建。

MySQL的配置

让我们在application.yml(也可以在properties中)中添加以下设置。

spring:
  datasource:
    url: jdbc:mysql://localhost
    username: root
    password:
      initialization-mode: always
  sql:
    init:
      mode: always

doma:
  dialect: ORACLE
  naming: SNAKE_LOWER_CASE

创建Dao接口

接下来,让我们创建一个能够发出SQL查询语句的DAO。

package com.example.doma.infrastructure.dao.todo;

import com.example.doma.domain.todo.Todo;
import org.seasar.doma.Dao;
import org.seasar.doma.Insert;
import org.seasar.doma.Select;
import org.seasar.doma.Update;
import org.seasar.doma.boot.ConfigAutowireable;

import java.util.List;

@ConfigAutowireable
@Dao
public interface TodoDao {
  @Select
  List<Todo> findAll(String name);
}

创建SQL文件

让我们创建一个适用于「findAll」的SQL查询语句。
关于SQL文件的位置,您需要将其放置在以下目录中,并且命名也必须相符合。

src/main/resources/META-INF/...(Daoファイルまでのディレクトリ)/findAll.sql

因为这次想要执行一个检索所有数据的SQL语句,所以让我们在文件中写下以下的SQL语句。

select * from テーブル名;

创建实体

我们来创建一个实体,按照以下方式进行。

package com.example.doma.domain.todo;

import lombok.Data;
import org.seasar.doma.*;

import java.util.Date;

// application.propertiesの「doma.naming」で指定済みなので不要
//@Entity(naming = NamingType.SNAKE_LOWER_CASE)
@Data
@Entity
public class Todo {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  public int id;

  private String name;

  private Date createTimestamp;

  private Date updateTimestamp;
}

设定已经完成了!接下来只需要创建Controller和Service,然后在Service中调用Dao的findAll方法就可以执行SQL了。

如果有什么不足之处,请您留下评论,谢谢!

广告
将在 10 秒后关闭
bannerAds