как mybatis обрабатывает логическое поле, используя mysql типа tinyint? - PullRequest
0 голосов
/ 09 марта 2020

Я использую mysql типа tinyint (1) для поля rabbitmqFlag. НО, за исключением исключений, на самом деле значение -1 или> 0 будет соответствовать значению true. Другой будет соответствовать значению false. Обычно мы думаем, что 0 - это ложь, а другой - правда. Почему?

@Data
public class User implements Serializable {

    private Long id;
    private String name;
    private Integer age;

    private Boolean rabbitmqFlag;

}

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM user1 WHERE rabbitmq_flag = 0")
    List<User> findUnSend();

}

1 Ответ

0 голосов
/ 11 марта 2020

MyBatis не обрабатывает числовое значение c.
Он просто возвращает результат ResultSet#getBoolean.

Согласно исходному коду драйвера комментарий , это для совместимости с драйвером ODB C, et c ..

public Boolean createFromLong(long l) {
  // Goes back to ODBC driver compatibility, and VB/Automation Languages/COM, where in Windows "-1" can mean true as well.
  return (l == -1 || l > 0);
}
...