package sample.repository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Map;
@Repository
public class SampleRepositoryImpl implements SampleRepository {
    @Autowired
    NamedParameterJdbcTemplate namedParameterJdbcTemplate;
    @Override
    public void update(String sql, MapSqlParameterSource params) 
    {
        // SQL実行直前にログに吐き出す。
        sqlPrint(sql,params);
        namedParameterJdbcTemplate.update(sql, params);
    }
    /**
     * SQL文を標準出力する
     * @param sql SQLクエリ文字列
     * @param params パラメータ
     */
    private void sqlPrint(String sql, MapSqlParameterSource params)
    {
        Map<String, Object> param = params.getValues();
        for(String key : param.keySet())
        {
            result = result.replaceAll(":" + key, "'" + param.get(key).toString() + "'");
        }
        System.out.println(result);
    }
}