Closed woochanglin closed 2 years ago
或者在文档中提供对应的扩展实现方式也可以,请考虑下。
其实用文档中提供的 rui 去直接生成的话 就觉得还好,如果自己都要手敲的话 确实比较烦
先参考示例集成代码生成器试试吧,后续在 @Entity.Table
中提供一个属性进行配置。
如果有好的建议,可以提出来。
https://github.com/mybatis-mapper/mybatis-mapper-example-springboot
之所以现在默认支持的是必须给所有字段加注解,就是为了避免 tk.mapper 时的各种配置,如果不加注解。。你需要判断 int,long
等类型是否算表中的列,类似枚举类型或者VO类型时,是否算表中的列。
现在都加注解后,在定义实体的过程中,都确定好了,后续出错的概率和配置问题就少了。
关于映射规则,有可能做成下面这样子:
@Entity.Table(value = "user",
props = {
@Entity.Prop(name = "deleteByExample.allowEmpty", value = "false", type = Boolean.class),//演示,不起作用
@Entity.Prop(name = "updateByExample.allowEmpty", value = "false", type = Boolean.class),
@Entity.Prop(name = "updateByExampleSelective.allowEmpty", value = "false", type = Boolean.class)
}
)
@Style.Camelhump
public class User {
@Entity.Column(id = true)
private Long id;
@Entity.Column
private String userName;
@Entity.Column
private String sex;
}
这个注解可以用于类或者字段,提供下面这些选择:
/**
* 字段转换方式
*/
public @interface Style {
/**
* 原值
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
@interface Normal {
}
/**
* 驼峰转下划线
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
@interface Camelhump {
}
/**
* 转换为大写
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
@interface Uppercase {
}
/**
* 转换为小写
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
@interface Lowercase {
}
/**
* 驼峰转下划线大写形式
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
@interface CamelhumpAndUppercase {
}
/**
* 驼峰转下划线小写形式
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
@interface CamelhumpAndLowercase {
}
}
虽然我通过 SPI 扩展 mybatis-provider 实现了这个功能,但是注解加多了也难受,所以先不提供这个功能,用代码生成器自动生成是比较好的选择。
如果能讨论出更好的方案,就可以提供。
类似tk.mapper中的的配置方式可以支持,但是暂时不打算提供,在实现新版本mapper的过程中,也实现了tk.mapper兼容的实现,但是不打算用。 https://github.com/mybatis-mapper/tk-mapper
多谢赐教,有好的想法会反馈。
这个版本目的就是不需要任何配置(注解是另一种形式的配置)。
后续会根据需要进行调整。
Originally posted by @abel533 in https://github.com/mybatis-mapper/mapper/issues/3#issuecomment-859235661