MBP01 Mybatis-plus를 Spring Boot로 가져오기

10400 단어 mybatisplusspringboot

在Spring Boot项目内引入mybatis-plus



설치



[pom.xml]에 직접 maven 종속성을 추가합니다. mysql-connector 버전은 언급할 필요가 없습니다(주석 참조).

<!-- mybatis-plus-boot-starter -->
  <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.0</version>
  </dependency>

  <!-- mysql connector -->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <!-- The managed version is 8.0.21 The artifact is managed in org.springframework.boot:spring-boot-dependencies:2.3.4.RELEASE -->
  </dependency>


注意我们是在spring boot中使用mybatis-plus,所以引入的包必须是 mybatis-plus-boot-starter .

구성



리소스 폴더 아래의 [application.properties]에 구성을 작성합니다.

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/xxx?useSSL=true
spring.datasource.username=xxx
spring.datasource.password=xxxxxx


엔티티 클래스



엔터티 클래스를 생성하기 전에 데이터베이스 테이블을 설계하고 생성해야 합니다.

이 예에서는 간단한 사용자 테이블과 목표 테이블을 생성합니다. 그리고 일대다 관계가 있습니다.

create table users (
  id integer primary key not null auto_increment,
  username varchar(50) not null,
  password varchar(100) not null,
  question varchar(150),
  answer varchar(50)
);

create table objective (
  id integer primary key not null auto_increment,
  name varchar(50) not null,
  user_id integer not null,
  foreign key (user_id) REFERENCES users (id)
);


엔티티 클래스의 경우 이름을 AppUser 로 지정했습니다. 클래스가 다르기 때문에 테이블에 클래스를 수동으로 매핑해야 합니다.

명확하고 읽을 수 있는 주석을 사용하는 것이 좋습니다.

@TableName(value = "users")
public class AppUser {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @TableField(value = "username")
    private String username;
    @TableField(value = "password")
    private String password;
    @TableField(value = "question")
    private String question;
    @TableField(value = "answer")
    private String answer;
    @TableField(exit = false)
    private List<Objective> objectives;
}


테이블의 열 이름이 클래스의 매개변수 이름과 정확히 같으면 @TableField를 생략할 수 있습니다.
@TableField(exit = false) 속성을 매핑하는 열이 데이터베이스에 없음을 나타냅니다.

기본 키


type@TableId 속성을 사용하여 테이블의 기본 키에 전략을 설정할 수 있습니다.

이 문서에서 논의할 몇 가지 옵션은 다음과 같습니다.
  • ASSIGN_ID
  • 자동
  • ASSIGN_UUID
  • 입력

  • ASSIGN_ID

    기본 전략입니다. 알고리즘(SnowFlake)을 사용하여 고유 ID를 생성합니다. 기본 키의 유형은 Java의 경우 Long 또는 String이어야 하고 mysql의 경우 BIGINT 또는 VARCHAR여야 합니다.

    자동

    데이터베이스에서 지원되는 자동 증가 전략을 사용합니다.

    ASSIGN_UUID
    ASSIGN_ID 와 유사하지만 모든 '-'를 제거하고 유형은 문자열 및 VARCHAR이어야 합니다.

    입력

    아이디는 사용자가 입력합니다.

    매퍼 클래스



    BaseMapper를 확장하는 인터페이스를 만드십시오. 인터페이스는 이미 기본 CRUD 방법을 통합했습니다.

    public interface AppUserMapper extends BaseMapper<AppUser> {
        //public AppUser find
    }
    


    Spring이 매퍼 클래스를 로드하도록 하는 두 가지 방법이 있습니다.
  • 모든 매퍼 클래스에 @Mapper를 추가하거나
  • 응용 프로그램 항목 클래스에 @MapperScan(basePackages="com...mapper")를 추가합니다(아래 코드 참조).

  • @SpringBootApplication
    @MapperScan(basePackages="com.myrrh.passbook.mapper")
    public class PassbookApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(PassbookApplication.class, args);
        }
    }
    


    테스트



    Controller 클래스에 코드를 추가하기만 하면 됩니다(간단하게 하기 위해 서비스 계층을 건너뛰었습니다).

    코드를 실행하려면 프로젝트를 시작하고 브라우저에 URL을 입력하기만 하면 됩니다.

    @Autowired
    AppUserMapper appUserMapper;
    
    @RequestMapping("/testdb")
    @ResponseBody
    public String testdb() {
        // the id type is AUTO
        AppUser au = new AppUser("jisd", "89hf3", "My post-graduate best friend", "Hue");
        appUserMapper.insert(au);
        return "done";
    }
    

    좋은 웹페이지 즐겨찾기