FastJSON #
fastjson可以转换的字段包括:
- 基本数据类型(int、long、float、double、boolean等)
- 字符串类型(String)
- 数组类型(Array)
- 集合类型(List、Set等)
- Map类型
- 自定义对象 对于自定义的对象来说,可以转换的部分包括:fastjson默认只会序列化public字段和提供了getter/setter方法的字段,private字段如果没有getter/setter方法则不会被序列化
可以使用注解@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修饰的字段转换出来
- fastjson的序列化和反序列化的过程是通过反射实现的。它会根据对象的类型和字段信息,动态地生成对应的JSON字符串或Java对象。
MyBatis知识点 #
- 在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>
- MBP的service接口,如果
list没有查询到数据,返回的是空数组而不是null