mybatis-mapper / mapper

MyBatis Mapper
https://mapper.mybatis.io
Apache License 2.0
325 stars 47 forks source link

Fn.toEntityColumn问题 #29

Closed CodingZx closed 2 years ago

CodingZx commented 2 years ago

当Entity字段为aTag这种情况下,会将aTag识别为ATag. ATag does not mark database column field annotations, unable to obtain column information

Entity:

@Data
@Entity.Table("a_test")
public class TestEntity {
    @Entity.Column(value = "id", id = true, typeHandler = UUIDHandler.class)
    private UUID id;
    @Entity.Column( "a_tag")
    private String aTag;
    @Entity.Column("create_time")
    private LocalDateTime createTime;
}

使用:

var exam = new Example<TestEntity>();
exam.createCriteria().andEqualTo(TestEntity::getATag, "a");
mapper.selectByExample(exam);
abel533 commented 2 years ago

aTag 生成的 getATag 不不合 java bean 规范(Introspector.decapitalize("ATag"))的字段名,建议修改。

CodingZx commented 2 years ago

我倒也是知道这个不符合规范.. 但是使用方法引用时按说是可以找到对应的字段的. 当我使用new TestEntity().insert()时, 这个字段是能匹配上的

abel533 commented 2 years ago

方法引用时,是通过方法名解析的字段名。

abel533 commented 2 years ago

Fn 中修改了规则:

  1. 先区分大小写匹配字段
  2. 如果不存在,再忽略大小写进行匹配
abel533 commented 2 years ago

1.2.2 版本已经支持