MyBatisPlus (18) field type processor: objects are stored as JSON strings

illustrate

Stores a complex object (collection or ordinary object) as JSON字符串 into a field in the database table.

MyBatisPlus provides an elegant way to map 复杂对象类型字段 to 字符串类型字段 in a database table.

Core annotations

  • @TableName(autoResultMap = true)
  • @TableField(typeHandler = JacksonTypeHandler.class)

The schematic diagram is as follows:

Insert image description here

code

package com.example.web.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.example.web.enumeration.GenderEnum;
import lombok.Data;

import java.util.List;

@Data
@TableName(autoResultMap = true)
public class User {
    
    
    private Long id;
    private String name;
    private Integer age;
    private String email;
    private Integer deleted;
    private GenderEnum gender;

    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Integer> tags;

    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Contact> contacts;

}
package com.example.web.entity;

import lombok.Data;

@Data
public class Contact {
    
    
    private String name;
    private String phone;
}

test

Test 1: Collection

code

    /**
     * 插入用户
     */
    @Test
    public void insert() {
    
    
        User user = new User();
        user.setId(13L);
        user.setName("孙一");
        user.setAge(27);
        user.setEmail("[email protected]");
        user.setGender(GenderEnum.MALE);
        List<Integer> tags = Stream.of(1, 2, 3, 4, 5).collect(Collectors.toList());
        user.setTags(tags);

        mapper.insert(user);
    }


    /**
     * 查询用户
     */
    @Test
    public void selectById() {
    
    
        User user = mapper.selectById(13L);
        log.info("user:{}", user);
    }
    

Insert data

Insert user:
Insert image description here
Data in database:
Insert image description here

Query data

Insert image description here

Test 2: Collection + Object

code

    /**
     * 插入用户
     */
    @Test
    public void insertWithContact() {
    
    
        User user = new User();
        user.setId(14L);
        user.setName("孙二");
        user.setAge(28);
        user.setEmail("[email protected]");
        user.setGender(GenderEnum.MALE);

        Contact contact = new Contact();
        contact.setName("吴一");
        contact.setPhone("18612340001");

        Contact contact2 = new Contact();
        contact2.setName("吴二");
        contact2.setPhone("18612340002");

        List<Contact> contacts = Stream.of(contact, contact2).collect(Collectors.toList());
        user.setContacts(contacts);

        mapper.insert(user);
    }


    /**
     * 查询用户
     */
    @Test
    public void selectByIdForContact() {
    
    
        User user = mapper.selectById(14L);
        log.info("user:{}", user);
    }

Insert data

Insert user:
Insert image description here

Data in the database:
Insert image description here

Query data

Insert image description here

Guess you like

Origin blog.csdn.net/sgx1825192/article/details/133846623