매퍼는 아래와 같이 작성함.
sql문에 ${sql변수명}으로 입력
메소드 인자에 (@Param("sql변수명") String(또는 int 등등) java변수명) 과 같이 입력
@Mapper
public interface FreeBoardMapper {
@Select("SELECT EXISTS " +
"(SELECT 1 FROM Information_schema.tables " +
"WHERE table_schema = '${DBName}' AND table_name = '${tableName}') " +
"AS flag")
int tblExist(@Param("DBName") String DBName, @Param("tableName") String tableName);
//sql 수행시
//String DBName이 ${DBName}을, String tableName이 ${tableName}을 대체함
@Slf4j
@Component
public class FreeBoardServiceImpl implements FreeBoardService {
private final FreeBoardMapper freeBoardMapper;
public FreeBoardServiceImpl(FreeBoardMapper freeBoardMapper) {
this.freeBoardMapper = freeBoardMapper;
}
@Override
public List<FreeBoard> freeBoardList() {
List<FreeBoard> freeBoardList = freeBoardMapper.freeBoardList();
isTblExist("theDB","theTable"); // <<<<<<theDB에 theTable이 있냐?
return freeBoardList;
}
//isTblExist("db명","tbl명")과 같이 사용.
public int isTblExist(String dBName, String tableName) {
int exist = freeBoardMapper.tblExist(dBName,tableName);
log.info("{} is {}",tableName, exist);
return exist;
}
}