通常情况下,使用JdbcDao操作的对象都是类名和属性名,在最终到数据库执行时(PersistExecutor之前)会转换成表名和列名。
这部分的转换操作就是由CommandConversionHandler来完成的。
CommandConversionHandler的定义就一个方法:
public interface CommandConversionHandler {
/**
* command转换
*
* @param command the command
* @param parameters the parameters
* @param jdbcContext the jdbc context
* @return string string
*/
String convert(String command, List<CmdParameter> parameters, JdbcContext jdbcContext);
}
传入转换前的command和参数,返回转换后的command(通常是sql)。
默认使用JSqlParser来实现转换,实现类JSqlParserCommandConversionHandler。
如果JSqlParserCommandConversionHandler不能满足需求,可以实现自己的CommandConversionHandler,把它配置到jdbcContext即可。
注意:当执行自定义sql调用了forceNative()方法时,将不经过commandConversionHandler的转换。