1 Tentukan medan JSON dalam jadual pangkalan data; 2. dalam JSON Tambah @TableField(typeHandler = JacksonTypeHandler.class) pada atribut pemetaan medan
1. Terdapat atribut dalam kelas entiti yang merupakan objek lain, atau mysql digunakan apabila menyimpan dalam format json pangkalan data, anda boleh menggunakan anotasi @TableField(typeHandler = JacksonTypeHandler.class) mybatis plus
@TableField(typeHandler = JacksonTypeHandler.class)
supaya objek boleh ditukar secara automatik kepada format json apabila menyimpan
2 .Jadi bagaimana untuk memetakan apabila mengeluarkannya? Terdapat dua situasi:
a: Apabila xml tidak digunakan:@Data
@TableName(value = "person",autoResultMap = true)
<result property="advance" column="advance" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
Orang kelas entiti
Kelas entiti ini mempunyai pengendali taip tersuai: IntegerListTypeHandler, StringListTypeHandler><🎜 Kaedah tersuai tidak boleh mendapatkan beberapa medan Oleh kerana orgId dan hobi dalam Orang memerlukan typeHandler tersuai, dan kaedah tersuai menggunakan resultType= Person, bukan ResultMap yang dijana, begitu juga null Set @ResultMap("mybatis-plus_Person") Pemahaman peribadi MyBatis Plus sendiri bukanlah ORM dinamik, tetapi hanya Apabila mybatis dimulakan, pernyataan SQL biasa dan tetapan Peta hasil disediakan untuk mybatis dan tidak akan mengubah tingkah laku MyBatis itu sendiri Soalan Lazim @TableField(typeHandler = IntegerListTypeHandler.class) tidak berkuat kuasa: kaedah tersuai tidak dikonfigurasikan dengan resultType JacksonTypeHandler Sokongan<🎜 JSON parsing><🎜 Menyokong penghuraian MVC JSON Nota: MybatisPlus membaca dan menulis medan json Mysql 2. kelas pojo Atas ialah kandungan terperinci Bagaimanakah MybatisPlus mengendalikan jenis json Mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Peningkatan@TableName(autoResultMap = true)
public class Person {
private Integer id;
private String name;
private Integer age;
@TableField(typeHandler = IntegerListTypeHandler.class)
private List<Integer> orgIds;
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> hobbies;
}
@Mapper
public interface PersonMapper extends BaseMapper<Person> {
/**
* 自定义的根据Id获取Person的方法,与MyBatis-Plus中的selectById相同的功能(但是不能使用autoResultMap生成的ResultMap).
*/
@Select("SELECT * FROM person WHERE id=#{id}")
Person selectOneById(int id);
}
Sokong penghuraian JSON MySQL
Tidak menyokong penghuraian JSON MySQL<🎜
Apabila menghuraikan MVC JSON, anda tidak perlu menambah @TableName (value = “t_test”, autoResultMap = true) [bahagian yang diserlahkan] , tetapi Apabila MySQL JSON menghuraikan pertanyaan, jika ia tidak ditambahkan, hasilnya adalah batalMySQL JSON Apabila menghuraikan pertanyaan, hanya format JSON yang disokong: {"name":"Tom","age ":12}, tidak disokong :{"name":"Tom","age":12} dan "{"name":"Tom","age":12}"Person person = new Person();
person.setAge(1);
person.setName("tim");
person.setOrgIds(Lists.newArrayList(1,2,3));
person.setHobbies(Lists.newArrayList("basketball", "pingpong"));
personMapper.insert(person);
# 可以得到正确的字段值
Person personInDb = personMapper.selectById(person.getId());
# orgIds和hobbies都为null
personInDb = personMapper.selectOneById(person.getId());
Preconditions.checkArgument(personInDb.getHobbies().equals(person.getHobbies()));
Preconditions.checkArgument(personInDb.getName().equals(person.getName()));
Preconditions.checkArgument(personInDb.getAge().equals(person.getAge()));
Preconditions.checkArgument(personInDb.getOrgIds().equals(person.getOrgIds()));
/**
* 设置了ResultMap为`mybatis-plus_Person`后就可以拿到正确的值.
*/
@ResultMap("mybatis-plus_Person")
@Select("SELECT * FROM person WHERE id=#{id}")
Person selectOneById(int id);
3