Birçok örnek alanı olan (çoğu isteğe bağlı olan) bir (Java) sınıfım var. Tüm alanların (sınıf) değişmez olmasını isterim. Bu yüzden, sınıfın örneklerini oluşturmak için Oluşturucu Kalıbı'nı kullanmak istiyorum.myBatis'i, Oluşturucu Kalıbı'nı kullanarak bir sınıf örneği oluşturmak için yapılandırabilir miyim?
myBatis'i, Oluşturucu Kalıbı'nı kullanarak bir sınıf örneği oluşturmak için yapılandırabilir miyim? Babamın bir harita döndürmesini ve bu haritayı kodumda örnek oluşturmak için kullanabileceğimi biliyorum. Bununla birlikte, Java Beans ve constructor'lar kullanılarak örnek oluşturabilmeye benzer bir şekilde, bu eşlemeyi yapılandırmanın bir yolunu arıyorum (veya bazı kuralı kullanın).
<!-- this doesn't work but I think h3adache suggest that I could have the resultType
be com.example.model.CarFacts.Builder and use the Builder constructor. But I'm not sure how
I would call the methods (such previousOwner(String)) to populate optional params -->
<mapper namespace="com.example.persistence.CarFactsMapper">
<select id="selectCarFacts" resultType="com.example.model.CarFacts">
select *
from CarFacts
</select>
</mapper>
Son olarak, mapper arayüzü vardır: gibi bir mapper var, Sonra
package com.example.model;
// domain model class with builder
public final class CarFacts {
private final double price;
private final double numDoors;
private final String make;
private final String model;
private final String previousOwner;
private final String description;
public static class Builder {
// required params
private final double price;
private final String make;
private final String model;
// optional params
private final String previousOwner;
private final String description;
private final double numDoors;
public Builder(double price, String make, String model) {
this.price = price;
this.make = make;
this.model = model;
}
public Builder previousOwner(String previousOwner) {
this.previousOwner = previousOwner;
return this;
}
// other methods for optional param
public CarFacts build() {
return new CarFacts(this);
}
}
private CarFacts(Builder builder) {
this.price = builder.price;
//etc.
}
}
:
Düzenleme İşte
bir örnek (örnek içerecek şekilde) :
package com.example.persistence.CarFactsMapper;
public interface CarFactsMapper{
List<CarFacts> selectCarFacts();
}
Ayrıca, myBatis aracılığıyla statik bir fabrika yöntemi kullanarak örnekler oluşturabiliyordum. Örneğin:
Özelliklepublic final class Person {
private final String lastName;
private final String firstName;
private Person(String lastName, String firstName) {
this.lastName = lastName;
this.firstName = firstName;
}
public Person newInstance(String lastName, String firstName) {
return new Person(lastName, firstName);
}
}
, ben myBatis newInstance (String, String) aramasını nasıl?
Bu soruya cevap vermiyor. –