Rumah > Artikel > pangkalan data > Bagaimanakah MybatisPlus mengendalikan jenis json Mysql
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"/>
MyBatis Plus - Cara menggunakan autoResultMap untuk membina ResultMap dalam xml
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
@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; }
Set @ResultMap("mybatis-plus_Person")@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);
}
Nama Peraturannya ialah: mybatis-plus_{nama kelas entiti}
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
Menyokong penghuraian MVC JSON
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()));
Nota:
MybatisPlus membaca dan menulis medan json Mysql
PrasyaratPastikan versi mysql ialah 5.7+1 Cipta jadual mysql baharu dan tambah medan json2. kelas pojo
/** * 设置了ResultMap为`mybatis-plus_Person`后就可以拿到正确的值. */ @ResultMap("mybatis-plus_Person") @Select("SELECT * FROM person WHERE id=#{id}") Person selectOneById(int id);
Atas ialah kandungan terperinci Bagaimanakah MybatisPlus mengendalikan jenis json Mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!