Java泛型:构建类型安全的ORM查询构建器

        模拟一个简单的ORM(对象关系映射)查询构建器,它使用泛型来实现类型安全的SQL查询构造。

1. 基础实体类和注解

首先定义一些基础注解和实体类:

// 表注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Table {
    String name();
}

// 列注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Column {
    String name();
    boolean nullable() default true;
}

// 主键注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Id {
    String name() default "";
    boolean autoIncrement() default false;
}
 

2. 泛型Repository接口

public interface Repository<T, ID> {
    // 保存实体
    T save(T entity);
    
    // 根据ID查找
    Optional<T> findById(ID id);
    
    // 查询所有
    List<T> findAll();
    
    // 条件查询
    List<T> findBy(Specification<T> specification);
    
    // 删除
    void delete(T entity);
    
    // 计数
    long count();
}

3. 查询条件构建器(使用泛型链式调用)

public class QueryBuilder<T> {
    private final Class<T> entityClass;
    private final List<Predicate> predicates = new ArrayList<>();
    private final List<Order> orders = new ArrayList<>();
    
    public QueryBuilder(Class<T> entityClass) {
        this.entityClass = entityClass;
    }
    
    public QueryBuilder<T> where(Predicate<T> predicate) {
        predicates.add(predicate);
        return this;
    }
    
    public QueryBuilder<T> orderBy(Order<T> order) {
        orders.add(order);
        return this;
    }
    
    public Specification<T> build() {
        return n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值