JdbcTemplateWrapperTenantImpl.java 11.6 KB
package com.taover.repository.jdbctemplate;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ParameterizedPreparedStatementSetter;
import org.springframework.jdbc.core.PreparedStatementCallback;
import org.springframework.jdbc.core.PreparedStatementSetter;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.support.rowset.SqlRowSet;

import com.taover.repository.exception.NoContainTenantException;

public class JdbcTemplateWrapperTenantImpl<ID extends Serializable> implements JdbcTemplateWrapperTenant<ID> {
	private JdbcTemplate jdbcTemplate;
	public JdbcTemplateWrapperTenantImpl(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}

	@Override
	public void doCheckTenantId(String sql, ID tenantId) throws NoContainTenantException {
		
	}
	
	@Override
	public JdbcTemplate getJdbcTemplate() {
		return this.jdbcTemplate;
	}
	
	@Override
	public void execute(String sql, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		this.jdbcTemplate.execute(sql);
	}

	@Override
	public <E> E query(String sql, ResultSetExtractor<E> rse, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.query(sql, rse);
	}

	@Override
	public void query(String sql, RowCallbackHandler rch, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		this.jdbcTemplate.query(sql, rch);
	}

	@Override
	public <E> List<E> query(String sql, RowMapper<E> rowMapper, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.query(sql, rowMapper);
	}

	@Override
	public <E> E queryForObject(String sql, RowMapper<E> rowMapper, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForObject(sql, rowMapper);
	}

	@Override
	public <E> E queryForObject(String sql, Class<E> requiredType, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForObject(sql, requiredType);
	}

	@Override
	public Map<String, Object> queryForMap(String sql, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForMap(sql);
	}

	@Override
	public <E> List<E> queryForList(String sql, Class<E> elementType, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForList(sql, elementType);
	}

	@Override
	public List<Map<String, Object>> queryForList(String sql, ID tenantId) throws DataAccessException {
		return this.jdbcTemplate.queryForList(sql);
	}

	@Override
	public SqlRowSet queryForRowSet(String sql, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForRowSet(sql);
	}

	@Override
	public int update(String sql, ID tenantId) throws DataAccessException {
		return this.jdbcTemplate.update(sql);
	}

	@Override
	public int[] batchUpdate(ID tenantId, String... sql) throws DataAccessException {
		for(String item: sql) {
			this.doCheckTenantId(item, tenantId);
		}
		return this.jdbcTemplate.batchUpdate(sql);
	}

	@Override
	public <E> E execute(String sql, PreparedStatementCallback<E> action, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.execute(sql, action);
	}

	@Override
	public <E> E query(String sql, PreparedStatementSetter pss, ResultSetExtractor<E> rse, ID tenantId)
			throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.query(sql, pss, rse);
	}

	@Override
	public <E> E query(String sql, Object[] args, int[] argTypes, ResultSetExtractor<E> rse, ID tenantId)
			throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.query(sql, args, argTypes, rse);
	}

	@Override
	public <E> E query(String sql, Object[] args, ResultSetExtractor<E> rse, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.query(sql, args, rse);
	}

	@Override
	public <E> E query(String sql, ResultSetExtractor<E> rse, ID tenantId, Object... args)
			throws DataAccessException {
		
			this.doCheckTenantId(sql, tenantId);
			return this.jdbcTemplate.query(sql, rse, args);
	}

	@Override
	public void query(String sql, PreparedStatementSetter pss, RowCallbackHandler rch, ID tenantId)
			throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		this.jdbcTemplate.query(sql, pss, rch);
	}

	@Override
	public void query(String sql, Object[] args, int[] argTypes, RowCallbackHandler rch, ID tenantId)
			throws DataAccessException {		
		this.doCheckTenantId(sql, tenantId);
		this.jdbcTemplate.query(sql, args, argTypes, rch);
	}

	@Override
	public void query(String sql, Object[] args, RowCallbackHandler rch, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		this.jdbcTemplate.query(sql, args, rch);
	}

	@Override
	public void query(String sql, RowCallbackHandler rch, ID tenantId, Object... args) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		this.jdbcTemplate.query(sql, rch, args);
	}

	@Override
	public <E> List<E> query(String sql, PreparedStatementSetter pss, RowMapper<E> rowMapper, ID tenantId)
			throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.query(sql, pss, rowMapper);
	}

	@Override
	public <E> List<E> query(String sql, Object[] args, int[] argTypes, RowMapper<E> rowMapper, ID tenantId)
			throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.query(sql, args, argTypes, rowMapper);
	}

	@Override
	public <E> List<E> query(String sql, Object[] args, RowMapper<E> rowMapper, ID tenantId)
			throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.query(sql, args, rowMapper);
	}

	@Override
	public <E> List<E> query(String sql, RowMapper<E> rowMapper, ID tenantId, Object... args)
			throws DataAccessException {		
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.query(sql, rowMapper, args);
	}

	@Override
	public <E> E queryForObject(String sql, Object[] args, int[] argTypes, RowMapper<E> rowMapper, ID tenantId)
			throws DataAccessException {		
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForObject(sql, args, argTypes, rowMapper);
	}

	@Override
	public <E> E queryForObject(String sql, Object[] args, RowMapper<E> rowMapper, ID tenantId)
			throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForObject(sql, args, rowMapper);
	}

	@Override
	public <E> E queryForObject(String sql, RowMapper<E> rowMapper, ID tenantId, Object... args)
			throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForObject(sql, rowMapper, args);
	}

	@Override
	public <E> E queryForObject(String sql, Object[] args, int[] argTypes, Class<E> requiredType, ID tenantId)
			throws DataAccessException {		
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForObject(sql, args, argTypes, requiredType);
	}

	@Override
	public <E> E queryForObject(String sql, Object[] args, Class<E> requiredType, ID tenantId)
			throws DataAccessException {		
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForObject(sql, args, requiredType);
	}

	@Override
	public <E> E queryForObject(String sql, Class<E> requiredType, ID tenantId, Object... args)
			throws DataAccessException {		
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForObject(sql, requiredType, args);
	}

	@Override
	public Map<String, Object> queryForMap(String sql, Object[] args, int[] argTypes, ID tenantId)
			throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForMap(sql, args, argTypes);
	}

	@Override
	public Map<String, Object> queryForMap(String sql, ID tenantId, Object... args) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForMap(sql, args);
	}

	@Override
	public <E> List<E> queryForList(String sql, Object[] args, int[] argTypes, Class<E> elementType, ID tenantId)
			throws DataAccessException {		
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForList(sql, args, argTypes, elementType);
	}

	@Override
	public <E> List<E> queryForList(String sql, Object[] args, Class<E> elementType, ID tenantId)
			throws DataAccessException {		
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForList(sql, args, elementType);
	}

	@Override
	public <E> List<E> queryForList(String sql, Class<E> elementType, ID tenantId, Object... args)
			throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForList(sql, elementType, args);
	}

	@Override
	public List<Map<String, Object>> queryForList(String sql, Object[] args, int[] argTypes, ID tenantId)
			throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForList(sql, args, argTypes);
	}

	@Override
	public List<Map<String, Object>> queryForList(String sql, ID tenantId, Object... args)
			throws DataAccessException {		
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForList(sql, args);
	}

	@Override
	public SqlRowSet queryForRowSet(String sql, Object[] args, int[] argTypes, ID tenantId)
			throws DataAccessException {		
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForRowSet(sql, args, argTypes);
	}

	@Override
	public SqlRowSet queryForRowSet(String sql, ID tenantId, Object... args) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.queryForRowSet(sql, args);
	}

	@Override
	public int update(String sql, PreparedStatementSetter pss, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.update(sql, pss);
	}

	@Override
	public int update(String sql, Object[] args, int[] argTypes, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.update(sql, args, argTypes);
	}

	@Override
	public int update(String sql, ID tenantId, Object... args) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.update(sql, args);
	}

	@Override
	public int[] batchUpdate(String sql, BatchPreparedStatementSetter pss, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.batchUpdate(sql, pss);
	}

	@Override
	public int[] batchUpdate(String sql, List<Object[]> batchArgs, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.batchUpdate(sql, batchArgs);
	}

	@Override
	public int[] batchUpdate(String sql, List<Object[]> batchArgs, int[] argTypes, ID tenantId)
			throws DataAccessException {		
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.batchUpdate(sql, batchArgs);
	}

	@Override
	public <E> int[][] batchUpdate(String sql, Collection<E> batchArgs, int batchSize,
			ParameterizedPreparedStatementSetter<E> pss, ID tenantId) throws DataAccessException {
		this.doCheckTenantId(sql, tenantId);
		return this.jdbcTemplate.batchUpdate(sql, batchArgs, batchSize, pss);		
	}
}