Тип значения bool тега в mybatis считается ложным.
Я ненавижу некоторые статьи Baidu, просто Ctrl+C и Ctrl+V. И это все еще не решает проблему.
Вчера реализована функция поиска статей по их идентификатору или псевдониму.
Сначала для запроса использовался пример mybatis, и оценивался параметр artName, если это чистое число, то опрашивается по Id, иначе по псевдониму. При запросе статей необходимо связывать и запрашивать теги классификации статей, поэтому я предпочитаю использовать сопоставление оператора select с запросом, но я не хочу писать два метода запроса, поэтому я использую динамический sql в mybatis.
/**
* 查询文章
* @param artName id 或 别名
* @param byId 如果是 true 则按照id查询
* 否则 按照别名查询
* @return
*/
public Article selectByArtName(@Param(value = "artName") String artName,
@Param(value = "byId") Boolean byId);
В Mapper определен метод, который имеет два параметра: artName и byId.artName представляет идентификатор или псевдоним, а byId указывает, следует ли запрашивать идентификатор.
При оценке логического значения byId значение false недопустимо, оно было найдено в кругу на Baidu и широко используется.
<if test="byId != null">
a.id = #{artName}
</if>
Таким образом, он выполняется нормально, когда byId=true, но не вступает в силу, когда он равен false. Используйте тег
<choose>
<when test="byId">
a.id = #{artName}
</when>
<otherwise>
a.alias = #{artName}
</otherwise>
</choose>
byId сам по себе является логическим значением и не нуждается в оценке.
Уведомление:ById не нужно добавлять #{}, иначе false будет недействительным. Если добавить #{}, при сравнении с другими значениями
как:#{byId} == true
Будет сообщено об ошибке нулевого указателя, если она написана как#{byId} == 'true'
Он сообщит, что Linkhashmap не может быть преобразован в ошибку типа String.