MP默认设置:
1.MP中insert新增记录时,我的入参并没有写主键id,但是执行后查看生成的sql语句是有id的;这个是MP给我们默认填充的,默认是采用基于雪花算法的自增id;
2.数据库的列带“_”下划线时,实体中会自动映射为驼峰命名规范;
3.数据表表名和实体中类名对应默认也是同上的;
4.@Data默认不为static静态变量生成getter和setter方法,需要手动写;
5.MP的默认策略是:实体对象中的实例变量值为null时,在执行插入或者修改操作时,数据库中与该实例变量对应的列,不会出现在insert和update语句中;
MP修改默认设置:
1.表名对应关系:(@TableName("对应数据库表名"))
——案例1:如果数据表表名为t_user,实体类名为user时,因为不符合MP的默认对应规则了,所以直接执行插入等相关方法时会报错;
——解决办法:在实体类名上加注解@TableName("t_user"),直接指定对应数据库表名即可。
2.主键字段对应关系:(@TableId)
——案例2:数据库主键字段为t_id,实体中对应字段为tId时,直接执行插入等相关方法时报错;
——原因:MP有默认规则,会找数据库中列名为id的作为主键,如果数据库中主键不加id而叫t_id或其它,MP就找不到了,不知道该对应实体中哪个字段,给哪个字段使用雪花算法来填充;
——解决办法:在实体中主键字段tId上添加注解@TableId,MP则知道此字段对应数据库中主键t_id字段。
3.普通字段对应关系:(@TableField("对应数据库字段名"))
——案例3:如果数据库中字段名name和实体中对应成员变量名tableName对应不上,则执行插入等操作时会报错;
——解决方案:在实体字段上添加@TableField("name"),指定和数据库中字段的对应关系。
常用注解使用指南:
1.@TableId:指定表主键字段对应的成员变量,并使用默认雪花算法;使用场景:当主键字段不为id时使用;要点:字段和变量名必须对应小驼峰;
2.@TableField(“字段名”):指定成员变量对应的表中字段名;使用场景:变量名和表字段名不对应时使用;
3.@TableId和@TableField(“字段名”)不能同时使用在一个变量上,@TableField(“字段名”)写在主键上时查询正常,但新增等方法会报错。