使用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了。
如果有什么不足之处,请您留下评论,谢谢!