xUtils系列之DbUtils-Finder注解

Finder注解定义:
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Finder {

    String valueColumn();

    String targetColumn();
}

DbUtils解析部分:
else if (ColumnUtils.isFinder(field)) {
    Finder column = new Finder(entityType, field);
    if (!columnMap.containsKey(column.getColumnName())) {
        columnMap.put(column.getColumnName(), column);
    }
}

注意:
1.当从数据库中查询某类的数据是,DbUtils会自动查询@Finder注解的关联类,
  前提是,关联类的数据在这之前被存入数据库中(这点和Foreign不同).

  否则,关联类的值为空


2.valueColumn和targetColumn要求类型相同


3.targetColumn并不一定是关联类的主键(和Foreign不同)


用法:
@Table(name = "parent", execAfterTableCreated = "CREATE UNIQUE INDEX index_name ON parent(name,email)")
public class Parent{

private int id;

@Finder(valueColumn = "id", targetColumn = "parentId")
public FinderLazyLoader<Child> children; // 关联对象多时建议使用这种方式,延迟加载效率较高。
//@Finder(valueColumn = "id",targetColumn = "parentId")
//public Child children;
//@Finder(valueColumn = "id", targetColumn = "parentId")
//private List<Child> children;
<snip>
}

@Table(name = "child")
public class Child extends EntityBase {

private int id;

//@Foreign(column = "parentId", foreign = "id")
//public ForeignLazyLoader<Parent> parent;
@Foreign(column = "parentId", foreign = "id")
public Parent parent;
<snip>
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值