第三方包知识点

FastJSON #

  1. fastjson可以转换的字段包括:

    • 基本数据类型(int、long、float、double、boolean等)
    • 字符串类型(String)
    • 数组类型(Array)
    • 集合类型(List、Set等)
    • Map类型
    • 自定义对象 对于自定义的对象来说,可以转换的部分包括:fastjson默认只会序列化public字段和提供了getter/setter方法的字段,private字段如果没有getter/setter方法则不会被序列化
  2. 可以使用注解@JSONField来指定字段的名称、格式等属性。

    • 例如:@JSONField(name = “user_name”, format = “yyyy-MM-dd”),表示将字段名转换为"user_name",并指定日期格式。
    • 可以指定该字段是否转换为JSON字符串,使用@JSONField(serialize = false)来表示不序列化该字段。
    • 如果是null的值的字段,不会转换出来
    • transient修饰的字段不会被转换
    • 内部类有getter、public字段也可以转换
    • 需要输出null的字段可以进行转换的配置,如下
String json = JSON.toJSONString(object, SerializerFeature.WriteMapNullValue);
  • WriteMapNullValue是输出null字段
  • WriteNullStringAsEmpty是将null的字符串转换为""
  • WriteNullListAsEmpty是将null的List转换为[]
  • SkipTransientField是跳过transient修饰的字段(默认行为)
  • WriteStaticField是将static修饰的字段转换出来
  1. fastjson的序列化和反序列化的过程是通过反射实现的。它会根据对象的类型和字段信息,动态地生成对应的JSON字符串或Java对象。

MyBatis知识点 #

  1. 在insert之后,如果xml中开启了useGeneratedKeys="true",则可以通过useGeneratedKeys属性来获取数据库生成的主键值。id就可以直接在实体类中直接user.getId()拿到。例如:
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
    INSERT INTO users (name, age) VALUES (#{name}, #{age})
</insert>
  1. MBP的service接口,如果list没有查询到数据,返回的是空数组而不是null