スプリングブート構成は、mybatis エンティティ クラスのハンプ命名と、データベース テーブル内の下線形式の統一マッピングを処理します。

1. 背景

springboot プロジェクト、mybatis。

エンティティクラス、属性のキャメルケース形式(orderNumber など)

package com.example.usermanagement.entity;


import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import javax.persistence.*;

@Entity
@Table(name = "shipping")
@Getter
@Setter
@Data
@NoArgsConstructor
public class Shipping {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String orderNumber; // 订单号

    @Column(nullable = false)
    private String shippingDate; // 发货日期

    @Column(nullable = false)
    private String shippingAddress; // 发货地址

    @Column(nullable = false)
    private String trackingNumber; // 快递单号

    @Column(nullable = false)
    private String recipientName; // 收货人姓名

    @Column(nullable = false)
    private String recipientPhone; // 收货人手机号
}

データベースでは、テーブルのフィールドは下線形式で表示されます

CREATE TABLE `shipping` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `order_number` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '订单号',
  `shipping_date` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '发货日期',
  `shipping_address` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '发货地址',
  `tracking_number` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '快递单号',
  `recipient_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '收货人姓名',
  `recipient_phone` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '收货人手机号',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

 

2、解決策 

1.application.yml構成

application.ymlキャメルケースが のエンティティへのアンダースコア マッピングを処理する方法を構成するには、MyBatis 構成プロパティを使用して を制御できます

構成ファイルの例を次に示しますapplication.yml

mybatis:
  configuration:
    map-underscore-to-camel-case: true

上記の例では、mybatis.configuration.map-underscore-to-camel-case: true構成アイテムを通じてキャメル ケースが有効になり、アンダースコアがエンティティ クラスのキャメル ケース属性に自動的にマッピングされます。

この構成の後、MyBatis はデータベース テーブル フィールドのアンダースコアをエンティティ クラスの対応するキャメルケースの名前付き属性に自動的に変換して、統一された命名スタイルを実現します。

2. アノテーションマッパーのコンパイル

import com.example.demo.model.Shipping;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface ShippingMapper {

    @Insert("INSERT INTO shipping (order_number, shipping_date,shipping_address,tracking_number,recipient_name,recipient_phone) VALUES (#{orderNumber}, #{shippingDate},#{shippingAddress},#{trackingNumber},#{recipientName},#{recipientPhone})")
    int insertShipping(Shipping shipping);
    
    // 其他方法...

}

上記の例では、@Mapperアノテーションを使用してこれが MyBatis の Mapper インターフェイスであることを識別し、@Insertアノテーションを使用して挿入ステートメントを指定し、#{}プレースホルダーを介してエンティティ クラスShippingのフィールドを参照します。

ここでのプレースホルダーの名前はShippingエンティティ クラスのフィールド名と一致している必要があり、そうでない場合は挿入が失敗することに注意してください。

おすすめ

転載: blog.csdn.net/qq_39208536/article/details/132225305
おすすめ