Mango注解大全
(1)@DB(table="表名") 或@DB 全名为
@org.jfaster.mango.annotation.DB ,dao接口必须使用它来修饰,这样这个dao接口才能被mango框架接受。
(2)@SQL("增删改查SQL语句") 注解的全名为 @org.jfaster.mango.annotation.SQL ,它被用来修饰下面对应的方法。
(3)@ReturnGeneratedId 用于修饰方法的返回值,注解 的全名为@org.jfaster.mango.annotation.ReturnGeneratedId ,被修饰的方法具有以下两种返回值类型:
int或java.lang.Integer:返回int类型的自增id
long或java.lang.Long:返回long类型的自增id
(4)@Rename 对参数进行重命名
(5)@Results/@Result 注解 @org.jfaster.mango.annotation.Results 和注解 @org.jfaster.mango.annotation.Result 来完成自定义映射规则匹配。
(6)@Mapper 定义映射类
(7)@ID 指定表的自增主键
(8)@ID(autoGenerateId = false) 指定表的非自增主键
(9)@column("uid")定义映射字段,将类A的userId属性映射到表的uid字段中
private Integer userId
(10)@Ignore 表中没有这个字段,可以使用该注解忽略这个属性
(11)@DB(name="") 用于指定所使用的数据源工厂的名字
(12)@Sharding(tableShardingStrategy= xxx.class) 用于将表分片策略与DAO接口进行绑定
(13)@TableShardingBy("") 用于指定给表分片策略传入的参数。
(14)@Sharding(databaseShardingStrategy = xxx.class) 用于将数据库分片策略与DAO接口进行绑定
(15)@DatabaseShardingBy("") 用于指定给数据库分片策略传入参数。
(16)@ShardingBy 使用@ShardingBy注解等于同时使用@DarabaseShardingBy注解与@TableShardingBy注解
(17)@Getter(IntegerListToStringFunction.class) 用于将整型列表转化为字符串
@Getter(IntegerListToStringFunction.class)
public List<Integer> getStudentIds() {
return studentIds;
}
@Getter注解的全名为@org.jfaster.mango.annotation.Getter,它使用在get方法上。
IntegerListToStringFunction类的全名为org.jfaster.mango.invoker.function.IntegerListToStringFunction,它用于将整型列表转化为字符串。
(18)@Setter(StringToIntegerListFunction.class) 用于将字符串转化为整型列表
@Setter(StringToIntegerListFunction.class)
public void setStudentIds(List<Integer> studentIds) {
this.studentIds = studentIds;
}
@Setter注解的全名为@org.jfaster.mango.annotation.Setter,它使用在set方法上。
StringToIntegerListFunction类的全名为org.jfaster.mango.invoker.function.StringToIntegerListFunction,它用于将字符串转化为整型列表。
(19)@Getter(EnumToIntegerFunction.class) 调用枚举对象的ordinal方法,将枚举对象转化为数字
@Getter(EnumToIntegerFunction.class)
public Gender getGender() {
return gender;
}
EnumToIntegerFunction类的全名为org.jfaster.mango.invoker.function.enums.EnumToIntegerFunction。
(20)@Setter(IntegerToEnumFunction.class) 用于将数字转化为枚举对象
@Setter(IntegerToEnumFunction.class)
public void setGender(Gender gender) {
this.gender = gender;
}
IntegerToEnumFunction类的全名为org.jfaster.mango.invoker.function.enums.IntegerToEnumFunction。
(21)Getter(ObjectToGsonFunction.class) ObjectToGsonFunction类的全名为org.jfaster.mango.invoker.function.json.ObjectToGsonFunction,它使用gson包,能将任意对象转化为json字符串。
@Getter(ObjectToGsonFunction.class)
public SubCard getSubCard() {
return subCard;
}
(22)Setter(GsonToObjectFunction.class) GsonToObjectFunction类的全名为org.jfaster.mango.invoker.function.json.GsonToObjectFunction,它使用gson包,能将json字符串转化为任意对象。
@Setter(GsonToObjectFunction.class)
public void setSubCard(SubCard subCard) {
this.subCard = subCard;
}
(23)@Cache(prefix="user", expire=Hour.class, num = 2) 表示需要使用缓存,参数prefix表示key前缀,比如说传入uid=1,那么缓存中的key就等于user_1,参数expire表示缓存过期时间,Hour.class表示小时,配合后面的参数num=2表示缓存过期的时间为2小时。
(24)@CacheBy用于修饰key后缀参数,在delete,update,getUser方法中@CacheBy都是修饰的uid,所以当传入uid=1时,缓存中的key就等于user_1。
(25)@CacheIgnored表示该方法不需要缓存。需要注意的是,如果使用了@Cache注解,@CacheBy和@CacheIgnored二者必须有一个存在。
实例(1):
@DB @Cache(prefix = "user", expire = Hour.class, num = 2) public interface SingleKeySingeValueDao { @CacheIgnored @SQL("insert into user(uid, name) values(:1, :2)") public int insert(int uid, String name); @SQL("delete from user where uid=:1") public int delete(@CacheBy int uid); @SQL("update user set name=:2 where uid=:1") public int update(@CacheBy int uid, String name); @SQL("select uid, name from user where uid=:1") public User getUser(@CacheBy int uid); }
实例(2):
@DB(table = "t_order") @Sharding(databaseShardingStrategy = OrderDatabaseShardingStrategy.class) // @Sharding 注解中的databaseShardingStrategy参数,将数据库分片策略与DAO接口进行绑定 public interface DatabaseShardingOrderDao { @SQL("insert into #table(id,uid,price,status) values(:id,:uid,:price,:status)") public void addOrder(@DatabaseShardingBy("uid") Order order); //引入了 @DatabaseShardingBy 注解用于指定给数据库分片策略传入的参数 @SQL("select id,uid,price,status from #table where uid =:1") public List<Order> getOrdersByUid(@DatabaseShardingBy int uid); }
实例(3):
@DB(table = "t_order") //绑定分表分库策略 @Sharding( databaseShardingStrategy = OrderDatabaseShardingStrategy.class, tableShardingStrategy = OrderTableShardingStrategy.class ) public interface ShardingOrderDao { /** * @DatabaseShardingBy 用于指定给数据库分片策略传入的参数 * @TableShardingBy 用于指定给表分片策略传入的参数 */ @SQL("insert into #table(id, uid, price, status) values(:id,:uid,:price,:status)") public void addOrder(@DatabaseShardingBy("uid") @TableShardingBy("uid")Order order); @SQL("select id, uid, price, status from #table where uid = :1") public List<Order> getOrderByUid(@DatabaseShardingBy @TableShardingBy int uid); }
后续会继续更新关于Mango的相关知识,请诸君多多支持!喜欢就点个赞,不喜勿喷!