带有 DTO 的 MyBatis 映射器

MyBatis mapper with DTO

是否可以在MyBatis mapper 中使用DTO 对象? 例如,替换方法 findPolicy

的以下永无止境的签名
@Mapper
public interface PolicyMapper {
    List<Policy> findPolicy(
            @Param("partnerId") Long partnerId,
            @Param("policyNo") Long policyNo,
            @Param("policyStatus") Integer policyStatus,
            @Param("policyOpenDateFrom") Date policyOpenDateFrom,
            @Param("policyOpenDateTo") Date policyOpenDateTo,
            @Param("policyFinalDateFrom") Date policyFinalDateFrom,
            @Param("policyFinalDateTo") Date policyFinalDateTo,
            // ....

使用简单的 DTO 对象?

@Mapper
public interface PolicyMapper {
    List<Policy> findPolicy(@ParametersAutoBinding PolicyFilterDto filter);
)

当然有:

List<Policy> findPolicy(PolicyFilterDto filter);

您可以直接访问 PoliceFilterDto 的属性。

参数有多个时必须命名。

List<Policy> findPolicy(@Param("filter") PolicyFilterDto filter, @Param("another") AnotherDto another);