Skip to content

Commit c2a1d9d

Browse files
author
Jarvis
committed
closed #96 ResultMap support constructor
1 parent 486dd74 commit c2a1d9d

File tree

1 file changed

+22
-24
lines changed

1 file changed

+22
-24
lines changed

src/main/java/org/springframework/data/mybatis/repository/support/MybatisSimpleRepositoryMapperGenerator.java

+22-24
Original file line numberDiff line numberDiff line change
@@ -793,55 +793,56 @@ private void buildInnerResultMap(final StringBuilder builder, final MybatisPersi
793793
PreferredConstructor<?, MybatisPersistentProperty> persistenceConstructor = persistentEntity.getPersistenceConstructor();
794794
if (null != persistenceConstructor && persistenceConstructor.hasParameters()) {
795795
constructorBuilder.append("<constructor>");
796-
}
797-
798-
799-
persistentEntity.doWithProperties(new SimplePropertyHandler() {
800-
@Override
801-
public void doWithPersistentProperty(PersistentProperty<?> pp) {
802-
MybatisPersistentProperty property = (MybatisPersistentProperty) pp;
803796

804-
if (persistentEntity.isConstructorArgument(property)) {
797+
for (PreferredConstructor.Parameter<Object, MybatisPersistentProperty> parameter : persistenceConstructor.getParameters()) {
798+
MybatisPersistentProperty property = persistentEntity.getPersistentProperty(parameter.getName());
799+
if (null != property) {
805800
if (property.isIdProperty()) {
806-
807801
if (property.isCompositeId()) {
808-
809802
MybatisPersistentEntityImpl<?> idEntity = context.getPersistentEntity(property.getActualType());
810803
if (null != idEntity) {
811804
idEntity.doWithProperties(new SimplePropertyHandler() {
812805
@Override
813806
public void doWithPersistentProperty(PersistentProperty<?> pp) {
814807
MybatisPersistentProperty property = (MybatisPersistentProperty) pp;
815-
builder.append(String.format("<idArg property=\"%s\" column=\"%s\" javaType=\"%s\" jdbcType=\"%s\"/>",
816-
property.getName() + "." + property.getName(),
808+
constructorBuilder.append(String.format("<idArg column=\"%s\" javaType=\"%s\" jdbcType=\"%s\"/>",
817809
alias(prefix + property.getName()),
818810
property.getActualType().getName(),
819811
property.getJdbcType()
820812
));
821813
}
822814
});
823815
}
824-
825816
} else {
826-
builder.append(String.format("<idArg property=\"%s\" column=\"%s\" javaType=\"%s\" jdbcType=\"%s\"/>",
827-
property.getName(),
817+
constructorBuilder.append(String.format("<idArg column=\"%s\" javaType=\"%s\" jdbcType=\"%s\"/>",
828818
alias(prefix + property.getName()),
829819
property.getActualType().getName(),
830820
property.getJdbcType()
831821
));
832822
}
833-
834-
835823
} else {
836-
constructorBuilder.append(String.format("<arg property=\"%s\" column=\"%s\" javaType=\"%s\" jdbcType=\"%s\""
837-
+ (null != property.getSpecifiedTypeHandler() ? (" typeHandler=\"" + property.getSpecifiedTypeHandler().getName() + "\"") : "")
838-
+ " />",
839-
property.getName(),
824+
constructorBuilder.append(String.format("<arg column=\"%s\" javaType=\"%s\" jdbcType=\"%s\"/>",
840825
alias(prefix + property.getName()),
841826
property.getActualType().getName(),
842827
property.getJdbcType()
843828
));
844829
}
830+
}else{
831+
832+
833+
}
834+
}
835+
836+
837+
constructorBuilder.append("</constructor>");
838+
}
839+
840+
841+
persistentEntity.doWithProperties(new SimplePropertyHandler() {
842+
@Override
843+
public void doWithPersistentProperty(PersistentProperty<?> pp) {
844+
MybatisPersistentProperty property = (MybatisPersistentProperty) pp;
845+
if (persistentEntity.isConstructorArgument(property)) {
845846
return;
846847
}
847848

@@ -862,9 +863,6 @@ public void doWithPersistentProperty(PersistentProperty<?> pp) {
862863
});
863864

864865

865-
if (null != persistenceConstructor && persistenceConstructor.hasParameters()) {
866-
constructorBuilder.append("</constructor>");
867-
}
868866
builder.append(constructorBuilder).append(resultBuilder);
869867
}
870868

0 commit comments

Comments
 (0)