2013-06-27 3 views
0

Могу ли я использовать обработчик типа в where where при написании динамического запроса в MyBatis?Использование обработчика типа в where where в MyBatis

Мне нужно преобразовать значение Boolean в char. ложь будет преобразована в «N» и верна «Y». Поскольку хранилище значений в столбце равно Y или N

ответ

0

Пожалуйста, скопируйте файл mapper.xml для дополнительной иллюстрации?

2

Да, вы можете использовать MyBatis typehandlers

public class YesNoBooleanTypeHandler extends BaseTypeHandler<Boolean> { 

    @Override 
    public void setNonNullParameter(PreparedStatement ps, int i, Boolean parameter, JdbcType jdbcType) 
      throws SQLException { 
     ps.setString(i, convert(parameter)); 
    } 

    @Override 
    public Boolean getNullableResult(ResultSet rs, String columnName) 
      throws SQLException { 
     return convert(rs.getString(columnName)); 
    } 

    @Override 
    public Boolean getNullableResult(ResultSet rs, int columnIndex) 
      throws SQLException { 
     return convert(rs.getString(columnIndex)); 
    } 

    @Override 
    public Boolean getNullableResult(CallableStatement cs, int columnIndex) 
      throws SQLException { 
     return convert(cs.getString(columnIndex)); 
    } 

    private String convert(Boolean b) { 
     return b ? "Y" : "N"; 
    } 

    private Boolean convert(String s) { 
     return s.equals("Y"); 
    } 

} 

Mapper.xml где положение:

... WHERE your_bool = #{yourBool,typeHandler=YesNoBooleanTypeHandler} ...