Там Mybatis эта операция? Зачем искать при анализе исходного кода

Многие люди имеют сомнения, хотел бы спросить, почему принцип интервью, задать источник, но нет доступа к реальной работе, то есть, мы часто говорим, что интервью не сделал ракеты, затянуть винты входить. Я много друзей вокруг и спросил меня, мой ответ на них, если вы не смотрите на исходный код, но не принцип, как решить проблему, они дали мне ответ в основном два слова :? «Поиск».

Действительно, работа большинства проблем может быть решена путем копирования ошибки поиска сообщений, а теперь все больше и больше рамок, боритесь строительными блоками программирования и поисковых систем, так что все больше и больше людей были разработаны очень легко иллюзия вещей. Я всегда хотел, чтобы дать немного поиска найдено меньше, в зависимости от исходного кода для того, чтобы понять смысл примеров причин.

Там Mybatis эта операция? Зачем искать при анализе исходного кода

Это произошло произошло в августе прошлого года, у меня есть хороший друг спросил меня такой вопрос, сказал он.

Почему я передать пустую строку, но следует использовать, если метка Mybatis суд оказался пустая строка == 0 основана
Там Mybatis эта операция? Зачем искать при анализе исходного кода

Из наших знаний, пустая строка и число, равное 0, что невозможно. Таким образом, моя первая реакция была, что он не является правом использования? Или это его дело вмешиваться в другие части кода? Так что я решил написать самый простой демо-версия для тестирования. ниже

Там Mybatis эта операция? Зачем искать при анализе исходного кода

А затем выводит результаты заключаются в следующем:

Там Mybatis эта операция? Зачем искать при анализе исходного кода

Неожиданно обнаружил, что если это действительно пустые строковые и маркировать цифры становятся равными 0, определяются.

Здесь я не пытаюсь обмануть вас столкнулись с этой проблемой, если честно, то первая реакция, конечно, не исходный код, чтобы увидеть вас, конечно, открыть браузер поиск. Основное направление нашего поиска есть два, один, чтобы определить принципы mybatis, если метка, Почему mybatis если метка является пустой строкой и 0 равны. было обнаружено, разве мы не хотим, чтобы найти ответ (вы можете искать самостоятельно).

Конечно, хотя нет удовлетворительного ответа на поиск, но мы нашли еще один пример.

Я считаю, что код, который мы проецировать похожи на этот суд должен был много.

<Если тест = "UID! = Утратившим UID! = ''"> </ Если>

Мы обычно развиваются, многие из моих коллег, как копировать вставить!

Там Mybatis эта операция? Зачем искать при анализе исходного кода

Так, не думая копия вставить его в конце концов, будет какой-либо проблемы, мы рассмотрим следующий пример

Там Mybatis эта операция? Зачем искать при анализе исходного кода

这个判断虽然是复制黏贴一把梭出来的,但是从我们的认知上来说,这个对象确实不是null,也不等于空字符串,所以这个判断应该是true的,但是运行结果如下:

Там Mybatis эта операция? Зачем искать при анализе исходного кода

果然,这个又颠覆了我们的认知,但是如果你遇到的是案例2这种情况还比较好搜索,还是能搜到解决方案,如下图

Там Mybatis эта операция? Зачем искать при анализе исходного кода

其实这两个案例都是一个问题,那就是这个if标签,把0和空字符串判断成了相等.

这个时候要敲黑板划重点了,俗话说一朝被蛇咬十年怕井绳,虽然第二个例子我们有了解决方案,但是这些解决方案都是治标不治本,如果我们没弄懂这其中的原理,那么你心里永远是有一块疙瘩的.你害怕下一次,又有奇奇怪怪的事情发生,只有弄懂原理,才能从根源解决问题,也就是解决一类问题,而不是某一个问题.

同时我也认识到,机会来了,终于找到一个为什么要看源码的比较合适例子了

分析源码

由于链路比较长.这里就不把debug过程展示了(对Mybatis执行流程不熟悉的,可以看看我之前的别怕看源码,一张图搞定Mybatis的Mapper原理,然后顺着执行流程debug

我们拿第一个例子来分析,因为两个案例其实遇到的问题都是一样的.

Там Mybatis эта операция? Зачем искать при анализе исходного кода
Там Mybatis эта операция? Зачем искать при анализе исходного кода
Там Mybatis эта операция? Зачем искать при анализе исходного кода
Там Mybatis эта операция? Зачем искать при анализе исходного кода
Там Mybatis эта операция? Зачем искать при анализе исходного кода

如果上面看不懂,我这里可以简单描述一下:

首先他会获取两个判断对象的类型,当拿一个字符串和一个数字判断的时候,因为类型不一样嘛,当mybatis发现,这个字符串是可以转换成数字的,那么就会把这个字符串转成数字,然后再和这个数字判断.那么问题就来了,这个空字符串会转换成什么数字呢?

从源码的这个

return s.length() == 0 ? 0.0D : Double.parseDouble(s);

就可以看出,这个空字符串,是会被转成0的.所以现在一切豁然开朗.

但是源码是看了,问题还是没有解决啊.他里面其他类型判断的源码这么多,不可能全部看完,时间也不允许啊,万一还有其他坑怎么办.由此可见,只看源码还是不够的,还需要一些解决问题的分析思路,这就是为什么网上源码解析的文章这么多。

解决问题的思路

В то время как мы смотрели на исходный код, мы также знаем правила, и мы хотим, чтобы определить, является расхождения. Но ключ, как решить эту проблему вещь. Много людей первая реакция была, что бы изменить код скандирование источника. Но, честно говоря, вы посмотрите на небольшой кусок исходного кода, так поспешно модифицированном, можно определить контроль сохраняется, конечно, не приведет к другим проблемам? поэтому направление мышления, чтобы решить эту проблему, обратите внимание, что я сказал, это направление, это очень важно.

Если три характеристики объектно-ориентированный, когда речь идет, то это, конечно, не незнакомо. Инкапсуляция, наследование, полиморфизм, но пяти принципов объектно-ориентированный. Таким образом, мы могли бы быть немного странно. То есть

  • Single Ответственность
  • Открытый Закрытый Принцип
  • Уверенность в результате чего, в принципе,
  • Интерфейс Сегрегация Принцип
  • Лиск принцип замещения

Тогда я сказал о принципе открытия и закрытия, ссылаясь на то, что знает Baidu есть это относительно краткое описание

Открытый Закрытый принцип, основная идея заключается в том: программное обеспечении компания должна быть масштабируемой, и не может быть изменена. То есть, открыто для расширения, закрытым для модификации.

Если вы понимаете, шаблоны дизайна, то он должен понимать, что это значит. Если вы не понимаете этого, вы можете посмотреть на WESTWARD шаблонов дизайна этой книги, как внедрить шаблоны проектирования политики. Проще говоря, это Ну, если вы привыкли, чтобы определить, если увеличение спроса на столько, что вам нужно добавить несколько иначе, если, то есть изменить код. но хороший дизайн должен быть больше, чем увеличение спрос, мне нужно только добавить класс реализации, которая является стратегией. (Если вы не знаете, студентов, рекомендуется, чтобы увидеть режим разработки), на самом деле, SPI, также содержит идею этого принципа открытия и закрытия.

Mybatis такую ​​хорошую основу. Люди, естественно, понимают пять принципов объектно-ориентированной, она, безусловно, следовать этому принципу. Другими словами, он обеспечит способ для вас, чтобы добавить мульти-класс, то класс внутри, чтобы настроить этот параметр, если правила судьи.

Решения

Мы адаптируем класс, к примеру, я назвал его FeiChaoOgnl

Там Mybatis эта операция? Зачем искать при анализе исходного кода

Тогда мы приходим к такой формулировке

Там Mybatis эта операция? Зачем искать при анализе исходного кода

Затем мы рассмотрим операцию

Там Mybatis эта операция? Зачем искать при анализе исходного кода
Там Mybatis эта операция? Зачем искать при анализе исходного кода

FeiChaoOgnl до тех пор, как метод определения полного комплекта, в соответствии с этой формулировкой, даже копировать вставить челнок, также значительно снижается риск возникновения проблем

рекомендация

отwww.cnblogs.com/CQqf2019/p/10983557.html