MyBatis-Plus学習ノート(1):環境構築および基本的なCRUD操作

7043 ワード

MyBatis-PlusはMyBatisのエンハンスメントツールで、MyBatisをベースにエンハンスメントを行うだけで変更せず、MyBatis-Plusを使用する場合、元のMybatis方式の使用に影響しません.
SpringBoot+MyBatis-Plus環境構築
SQLスクリプト:
CREATE TABLE `tb_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `real_name` varchar(20) DEFAULT NULL,
  `email` varchar(50) DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO tb_user (real_name,email,phone) VALUES ('  ','[email protected]','18711111111');
INSERT INTO tb_user (real_name,email,phone) VALUES ('  ','[email protected]','18322222222');
INSERT INTO tb_user (real_name,email,phone) VALUES ('  ','[email protected]','18133333333');
INSERT INTO tb_user (real_name,email,phone) VALUES ('  ','[email protected]','18344444444');
INSERT INTO tb_user (real_name,email,phone) VALUES ('  ','[email protected]','18723232323');

依存を追加するには、次のようにします(Mybatisの依存を追加する必要はありません):

        
            org.springframework.boot
            spring-boot-starter
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.3.1.tmp
        
        
            mysql
            mysql-connector-java
            5.1.47
        

application.yml:
spring:
  datasource:
    url: jdbc:mysql://localhost/plusdb?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

#      SQL  ,com.cf.mpdm.mapper   mapper     
logging:
  level:
    com.cf.mpdm.mapper: debug

メイン・プログラム・クラス:
package com.cf.mpdm;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//    mapper      
@MapperScan("com.cf.mpdm.mapper")
@SpringBootApplication
public class MpdmApplication {

    public static void main(String[] args) {
        SpringApplication.run(MpdmApplication.class, args);
    }

}

UserMapperインタフェース:
package com.cf.mpdm.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cf.mpdm.entity.User;

public interface UserMapper extends BaseMapper {
}

UserMapperインタフェースは、BaseMapperインタフェースを継承し、テーブルに対応する汎用エンティティクラスを指定する必要があります.
エンティティークラスUser:
package com.cf.mpdm.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

//  tb_user tb_  ,      User   ,      @TableName    
@TableName("tb_user")
public class User {

    //             
    @TableId(type = IdType.AUTO)
    private Integer id;

    private String realName;

    private String email;

    private String phone;

   //get/set ...
}

MyBatis-Plusのデフォルトでは、下線でアルパカに名前を付けたマッピング規則を使用して、テーブルとエンティティークラス名、およびテーブルのカラム名とエンティティークラスフィールドのマッピングを処理します.デフォルトのルールが適用されない場合は、注釈@Table Nameを使用してテーブル名を指定し、@Table Idおよび@Table Fieldを使用してプライマリ・キー列および非プライマリ・キー列の列名を指定するなど、マッピングを追加の構成で処理する必要があります.
@Table Idは、プライマリ・キーの生成ポリシーを指定することもできます.デフォルトの生成ポリシーはNONEで、ステータスがなく、プライマリ・キー・タイプが設定されていないことを示します.その他のポリシーの詳細はIdTypeを参照してください.
多くのテーブルが同じ接頭辞または同じプライマリ・キー生成ポリシーを有する場合、手動で注釈を追加することなく、グローバル構成を使用してテーブル接頭辞とプライマリ・キー・ポリシーを指定することができます.もちろん、少数の特殊な方法で指定することもできます.アプリケーション.yml:
mybatis-plus:
  global-config:
    db-config:
      #              
      idType: AUTO
      #      
      tablePrefix: tb_

基本的なCRUD操作
package com.cf.mpdm;

import com.cf.mpdm.entity.User;
import com.cf.mpdm.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@SpringBootTest
class MpdmApplicationTests {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void testInsert(){
        //INSERT INTO tb_user ( real_name, email, phone ) VALUES ( ?, ?, ? )
        User user = new User();
        user.setRealName("  ");
        user.setEmail("[email protected]");
        user.setPhone("18700000000");
        userMapper.insert(user);

            //     ,                
        System.out.println(user.getId());
    }

    @Test
    public void testDelete(){
        //    ID    
        //DELETE FROM tb_user WHERE id=?
        userMapper.deleteById(6);

        //  id        
        //DELETE FROM tb_user WHERE id IN ( ? , ? )
        /*List idList = new ArrayList<>();
        idList.add(12);
        idList.add(13);
        userMapper.deleteBatchIds(idList);*/

        //         ,   real_name     ,columnMap Key         ,           。
        //DELETE FROM tb_user WHERE real_name = ?
        /*Map columnMap = new HashMap<>();
        columnMap.put("real_name", "  ");
        userMapper.deleteByMap(columnMap);*/
    }

    @Test
    public void testUpdate(){
        //    id    
        //UPDATE tb_user SET real_name=? WHERE id=?
        User user = new User();
        user.setId(2);
        user.setRealName("   ");
        userMapper.updateById(user);
    }

    @Test
    public void testSelect(){
        //    id    
        //SELECT id,real_name,email,phone FROM tb_user WHERE id=?
        /*User user = userMapper.selectById(3);
        System.out.println(user.getRealName());*/

        //  id        
        //SELECT id,real_name,email,phone FROM tb_user WHERE id IN ( ? , ? )
        /*List idList = new ArrayList<>();
        idList.add(3);
        idList.add(4);
        List userList = userMapper.selectBatchIds(idList);
        System.out.println(userList.size());*/

        //           
        //SELECT id,real_name,email,phone FROM tb_user WHERE real_name = ?
        Map columnMap = new HashMap<>();
        columnMap.put("real_name", "  ");
        List userList = userMapper.selectByMap(columnMap);
        System.out.println(userList.size());
    }
}

mapperの使用について.xmlのいくつかの構成
mybatis-plus:
  #  Mapper    XML    
  mapperLocations: classpath:mapper/*.xml
  #         ,                ,     Mapper     XML            ,           
  typeAliasesPackage: com.cf.mpdm.entity