package com.querydsl.example.sql.repository;
import com.querydsl.example.sql.guice.ConnectionContext;
import com.querydsl.core.types.Expression;
import com.querydsl.sql.Configuration;
import com.querydsl.sql.RelationalPath;
import com.querydsl.sql.SQLQuery;
import com.querydsl.sql.dml.SQLDeleteClause;
import com.querydsl.sql.dml.SQLInsertClause;
import com.querydsl.sql.dml.SQLUpdateClause;
import javax.inject.Inject;
import javax.sql.DataSource;
import java.sql.Connection;
public abstract class AbstractRepository {
@Inject
private Configuration configuration;
@Inject
private ConnectionContext context;
@Inject
private DataSource datasource;
private Connection getConnection() {
return context.getConnection();
}
protected <T> SQLQuery<T> selectFrom(RelationalPath<T> entity) {
return select(entity).from(entity);
}
protected <T> SQLQuery<T> select(Expression<T> entity) {
return new SQLQuery<Void>(getConnection(), configuration).select(entity);
}
protected SQLInsertClause insert(RelationalPath<?> path) {
return new SQLInsertClause(getConnection(), configuration, path);
}
protected SQLUpdateClause update(RelationalPath<?> path) {
return new SQLUpdateClause(getConnection(), configuration, path);
}
protected SQLDeleteClause delete(RelationalPath<?> path) {
return new SQLDeleteClause(getConnection(), configuration, path);
}
}