SpringBootはJpaを統合し、追加、削除、変更、クエリ機能を実現(Giteeソースコード提供)

まえがき: 日常の開発では、常に簡単な SQL を書くのは非常に時間がかかります。JPA は開発の効率化に最適です。通常の SQL を自分で書く必要はありません。MyBatis と比較して、よりシンプルで簡単な機能を備えています。 MyBatis は Jpa に比べてより使いやすい機能を備えていますが、Jpa よりも自由度が高いため、一部の中小規模のプロジェクト開発には Jpa の方が適しており、開発者の開発効率が向上します。完全な追加、削除、変更を実現するには、関数をチェックしてください。 

目次

1. pom 依存関係をインポートする

2、yml設定ファイル

三、テーブル構造SQL

4、ユーザーエンティティクラス

5、Dao永続化層

6. 使用例

6.1. Zhang San という名前のユーザーをクエリする

6.2. ページクエリデータ

6.3、カスタム SQL クエリ

6.4. 新しいユーザーデータの追加

6.5. ユーザーデータの一部を変更する

6.6. ユーザーデータの削除

7.Giteeのソースコード 

8. まとめ


1. pom 依存関係をインポートする

完全なコード:

<dependencies>

        <!-- JPA -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- MySQL驱动依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>

        <!-- lombok依赖包 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        
    </dependencies>

2、yml設定ファイル

完全なコード:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/数据库名?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: 用户名
    password: 密码
  # JPA配置
  jpa:
    # 在建表的时候,将默认的存储引擎切换为InnoDB
    database-platform: org.hibernate.dialect.MySQLDialect
    # 数据源
    database: mysql
    # 控制台显示sql
    show-sql: true
    hibernate:
      # 更新或创建表结构
      ddl-auto: update

三、テーブル構造SQL

完全なコード:

-- jpa.`user` definition

CREATE TABLE `user` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `username` varchar(100) NOT NULL,
  `password` varchar(100) NOT NULL,
  `sex` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `address` varchar(100) DEFAULT NULL,
  `age` bigint NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=103 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

4、ユーザーエンティティクラス

一般的に使用されるエンティティ クラスのアノテーションは次のとおりです。

1. @Entity: クラスを JPA エンティティ クラスとしてマークするために使用され、このクラスがデータベース内のテーブルにマップされることを示します。JPA では、JPA がエンティティ クラスを認識して管理できるように、エンティティ クラスに @Entity アノテーションを付ける必要があります。

2. @Table: エンティティ クラスに対応するデータベース テーブルの名前と制約を指定するために使用されます。

name: テーブルの名前を指定します。

schema: テーブルが存在するデータベース スキーマを指定します。

カタログ: テーブルが配置されているデータベース カタログを指定します。

uniqueConstraints: 指定されたテーブルの一意の制約。

3. @Column: エンティティ クラスの属性とデータベース テーブルのフィールド間のマッピング関係を指定するために使用されます。

name: フィールドの名前を指定します。

nullable: フィールドが null 可能かどうかを指定します。

unique: フィールドが一意であるかどうかを指定します。

length: フィールドの長さを指定します。

precision: フィールドの精度を指定します。

スケール: フィールドの小数点以下の桁数を指定します。

4. @Id: エンティティクラス属性を主キーとして指定するために使用されます。

5. @GeneratedValue: 主キーの生成戦略を指定するために使用されます。

Strategy: AUTO、IDENTITY、SEQUENCE などの主キー生成戦略を指定します。

6. @Transient: エンティティ クラスの属性をデータベースに永続化する必要がないことを指定するために使用されます。

7. @Access: FIELD、PROPERTY などの属性のアクセス方法を指定するために使用されます。

8. @Temporal: エンティティ クラス属性とデータベース テーブル フィールド間の日付/時刻型マッピングを指定するために使用されます。

value: DATE、TIME、TIMESTAMP などの日付/時刻タイプを指定します。

9. @Enumerated: エンティティ クラス属性とデータベース テーブル フィールド間の列挙型マッピングを指定するために使用されます。

value: ORDINAL、STRING などの列挙型のマッピング方法を指定します。

10. @Embedded: エンティティクラスの属性を埋め込みオブジェクトとして指定する場合に使用します。

11. @Embeddable: 埋め込みオブジェクトを指定するために使用されます。

12. @OneToOne: エンティティ クラス間の 1 対 1 の関係を指定するために使用されます。

13. @JoinColumn: 外部キー列の名前と制約を指定するために使用されます。

14. @OneToMany: エンティティ クラス間の 1 対多の関係を指定するために使用されます。

15. @JoinColumn: 外部キー列の名前と制約を指定するために使用されます。

16. @OrderBy: コレクション プロパティの並べ替え方法を指定するために使用されます。

17. @ManyToOne: エンティティ クラス間の多対 1 の関係を指定するために使用されます。

18. @JoinColumn: 外部キー列の名前と制約を指定するために使用されます。

19. @ManyToMany: エンティティ クラス間の多対多の関係を指定するために使用されます。

20. @JoinTable: 中間テーブルの名前と制約を指定するために使用されます。

21. @JoinColumn: 外部キー列の名前と制約を指定するために使用されます。

完全なコード:

package com.example.jpa.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "user")
public class User {

    @Id
    @Column(name = "id",nullable = false)
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long id;

    @Column(name = "username",nullable = false,length = 100)
    private String username;

    @Column(name = "password",nullable = false,length = 100)
    private String password;

    @Column(name = "sex",nullable = false,length = 1)
    private String sex;

    @Column(name = "address",length = 100)
    private String address;

    @Column(name = "age",nullable = false)
    private int age;
}

5、Dao永続化層

完全なコード:

package com.example.jpa.dao;

import com.example.jpa.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface UserRepository extends JpaRepository<User,Long> {

    /**
     * 根据用户名去查询用户信息
     * @return
     */
    public User findUserByUsername(@Param("username") String username);
    
    /**
     * 自定义SQL查询
     * @return
     */
    @Query(value="select * from user where address like %:address%",nativeQuery=true)
    List<User> findUserByAddressSQL(@Param("address") String address);


}

6. 使用例

以下に、いくつかの基本的な追加、削除、変更、およびクエリ関数をリストします。

6.1. Zhang San という名前のユーザーをクエリする

完全なコード:

package com.example.jpa;

import com.example.jpa.dao.UserRepository;
import com.example.jpa.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;

@SpringBootTest
class JpaApplicationTests {

    @Resource
    private UserRepository userRepository;

    @Test
    void contextLoads() {
        User user = userRepository.findUserByUsername("张三");
        System.out.println(user);
    }

}

6.2. ページクエリデータ

完全なコード:

package com.example.jpa;

import com.example.jpa.dao.UserRepository;
import com.example.jpa.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import javax.annotation.Resource;
import java.util.List;

@SpringBootTest
class JpaApplicationTests {

    @Resource
    private UserRepository userRepository;

    @Test
    void contextLoads() {
        Pageable pageable = PageRequest.of(1, 10);
        Page<User> userPage = userRepository.findAll(pageable);
        List<User> userList = userPage.getContent();
    }

}

6.3、カスタム SQL クエリ

完全なコード:

package com.example.jpa;

import com.example.jpa.dao.UserRepository;
import com.example.jpa.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.List;

@SpringBootTest
class JpaApplicationTests {

    @Resource
    private UserRepository userRepository;

    @Test
    void contextLoads() {
        List<User> userList = userRepository.findUserByAddressSQL("江苏");
    }

}

6.4. 新しいユーザーデータの追加

完全なコード:

package com.example.jpa;

import com.example.jpa.dao.UserRepository;
import com.example.jpa.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.*;

@SpringBootTest
class JpaApplicationTests {

    @Resource
    private UserRepository userRepository;

    @Test
    void contextLoads() {
        User user = new User();
        user.setUsername("李四");
        user.setPassword(UUID.randomUUID().toString());
        user.setAddress("江苏南通");
        user.setAge(18);
        user.setSex("男");
        userRepository.save(user);
    }

}

6.5. ユーザーデータの一部を変更する

完全なコード:

package com.example.jpa;

import com.example.jpa.dao.UserRepository;
import com.example.jpa.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.UUID;

@SpringBootTest
class JpaApplicationTests {

    @Resource
    private UserRepository userRepository;

    @Test
    void contextLoads() {
        User findUserByUsername = userRepository.findUserByUsername("张三");
        findUserByUsername.setPassword(UUID.randomUUID().toString());
        userRepository.save(findUserByUsername);
    }

}

6.6. ユーザーデータの削除

完全なコード:

package com.example.jpa;

import com.example.jpa.dao.UserRepository;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;

@SpringBootTest
class JpaApplicationTests {

    @Resource
    private UserRepository userRepository;

    @Test
    void contextLoads() {
        userRepository.deleteById(18L);
    }

}

7.Giteeのソースコード 

コードクラウドアドレス:SpringBootにJpaを統合し、追加・削除・変更・確認機能を実現

8. まとめ

以上が SpringBoot の JPA 統合の追加、削除、変更、確認の基本的な機能の共有でしたが、何か質問があればコメント欄で議論してください。

おすすめ

転載: blog.csdn.net/HJW_233/article/details/132575085