Mybatis の вопросы общих интервью

Mybatis - Вопросы Интервью


Последние готовы узнать о системе Mybatis, только беглый чтение до следующих выборов десять общих вопросы интервью

В чем разница между # 1 и $ {} {} есть?

#{}是预编译处理,${}是字符串替换。
Mybatis при обработке # {}, будет в SQL номером # {} с методом присвоения множества вызовов в PreparedStatement ;?
Mybatis во время обработки, {}, чтобы заменить значение переменной.
Используйте # {} может эффективно предотвратить SQL инъекции, улучшить безопасность системы.

###### 2.Dao Каков принцип работы интерфейса? Dao интерфейсы методов, параметров различны, метод может перезагрузить его?

ДАО интерфейс часто говорят Картопостроитель интерфейс полное имя интерфейса является пространством имен значение карты файла, и имя метода интерфейса идентификатор файла отображения значения MappedStatement, параметры в методе интерфейса передается в SQL параметры. Картопостроитель не класс реализации интерфейса, когда интерфейс вызова метода, название интерфейса + полное имя метода в качестве ключевого значения конкатенации, а может быть однозначно позиционируются MappedStatement, например: com.mybatis3.mappers.StudentDao.findStudentById, можно найти уникальное пространство имен ID = findStudentById com.mybatis3.mappers.StudentDao ниже MappedStatement. В Mybatis, каждый <select>、<insert>、<update>、<delete>тег будет разрешен к объекту MappedStatement.
Dao в методе интерфейса не перегружен, потому что политика является сохранение и найти полное имя + имя метода.
Dao является интерфейс работает JDK динамический прокси будет использоваться Mybatis работает JDK динамического прокси - интерфейс генерации Dao объекта прокси прокси, методы прокси перехватывает интерфейс прокси - объект в пользу реализации SQL MappedStatement представленной, то результаты выполнения SQL возвращаются.

3. Mybatis Как является подкачки? Какой принцип нумерация страниц плагин?

объекты Mybatis RowBounds с помощью поискового вызова, который установлен для результата выполнения поискового вызова ResultSet, а не физическая страница может быть непосредственно написана с параметрами физических страниц в физической странице выполняется функция SQL может быть использована для завершения физической страницы вкладки виджета ,
Основной принцип заключается в том, чтобы использовать интерфейс Mybatis плагин вкладки плагин при условии, чтобы достигнуть пользовательских плагинов, SQL перехвата перехвата , которые должны выполняться в рамках метода вставки, а затем переписать SQL, согласно диалекте говор, добавьте операторы и физическую страницу , соответствующих физических параметров поискового вызова.

4. Mybatis как выполнить SQL пакет является результатом целевого объекта и возвращается? Какие формы отображения?

Первый заключается в использовании Tag, определяющее отображения между именем имен столбцов и свойствами объекта. Вторая функция заключается в использовании колонки псевдонима SQL, имя столбца псевдонима записывается в виде свойств объекта, такие как t_name как имя, свойство Общего объектного имя, в нижнем регистре, но имена столбцов чувствителен к регистру, Mybatis игнорирует случай имени столбца, умный находит соответствующий объект имя свойства, вы можете даже написать t_name как имя, так как Mybatis может работать должным образом.
Если у вас есть отображение столбцов между именами и именами атрибутов, Mybatis созданием объектов путем отражения, использование отражением индивидуально назначенные свойствами объекта и возвращает эти свойства не могут найти зависимость отображения, он не в состоянии выполнить задание.

5. Xml отображение файлов, в дополнение к общему ВЫБРАТЬ | вставки | обновление | удалить метку снаружи, какой лейбл?

Примечание: Этот вопрос приходит от Jingdong интервьюера.
Есть много других этикеток, а также девять динамических SQL тегов, обрезки | где | набор | Еогеасп | если | выбрать | при | | иначе связывают и так далее, который является фрагмент SQL бирки, ярлык представлен фрагментом SQL, не поддерживается автоинкрементная первичная ключ этикетка стратегии поколения.

6. Принцип работы изложены Mybatis плагинов, а также, как написать плагин

Mybatis может написать лишь для ParameterHandler, ResultSetHandler, StatementHandler, исполнитель съемного интерфейса четыре, Mybatis использовать динамический прокси JDK для перехвата генерации функции перехвата интерфейс должен реализовать метод интерфейса прокси-объект всякий раз, когда выполнение четырех интерфейсных объектов когда метод будет ввести метод перехвата, бетон InvocationHandler вызова () метод, конечно же, вам нужно будет только перехватывать те вы задаете перехват. Mybatis достижение методы перехватчик интерфейсы и репликация перехватывать (), а затем писать заметки в плагине, определяет интерфейс, к которому методе перехвата, помните, что вам необходимо настроить плагин, написанные в конфигурационном файле.

7. кэши L1 и L2

1) кэш: а HashMap на основе PerpetualCache локальный кэш, который хранит объем сессии, сессии после промывки или закрыть все кэш будет сброшен в сессии.
2) вторичный кэш и кэш тот же самый механизм, но также с использованием по умолчанию PerpetualCache, HashMap хранится, она хранится в другой области , как Mapper (Пространство имен), и может быть пользовательский источник хранения, такие как EHCache. Чтобы включить кэша второго уровня, вам нужно добавить одну строку в файл сопоставления SQL:
3) Для механизма обновления кэша данных, при выполнении операции / D C / U определенного объема (кэш-Session / вторичный кэш пространства имен) после того, как по умолчанию выбрать объем все кэша будет ясно.

8. Mybatis поддержки отложенной загрузки? Если да, то каков его принцип заключается в том, чтобы достичь?

Mybatis ассоциация поддерживает только отложенную загрузку соответствующего объекта коллекцию и коллекцию связанных объектов, объединение относится к одному, сбор относится к многочисленным запросам. В файле конфигурации Mybatis можно настроить ли включить отложенную загрузку lazyLoadingEnabled = истина | ложь.
Его принцип заключается в том, чтобы использовать CGLIB создать прокси - объект целевого объекта при вызове метода цель, ввести методы перехватчики, такие как a.getB вызова (). GetName (), метод перехватчик Invoke () нашел a.getB () является нулевое значение, то это будет отделить сохраненные запросы , отправленные заранее SQL , связанный объект B, запрос на в, а затем вызвать a.setB (б), то есть значение атрибута целевой б, а затем завершается a.getB ( ) вызывается метод .getName (). Это основной принцип отложенной загрузки.

9. Mybatis отображение файла, если метка Побочным ссылкой на содержание B включают этикетки, может спросить меня, Могу ли я определить метку B на задней этикетке A, или что должно быть определено в предыдущем ярлыке?

Хотя Mybatis разбор файла карты Xml обрабатывается в порядке, однако, B метка еще ссылки могут быть определены в любом месте, Mybatis могут быть определены правильно.
Принцип, Mybatis метку синтаксического, ссылки B нашел маркирующий, но тег не был разрешен к B, еще не существует, в это время, помеченный A-метка будет Mybatis нерешенной, и разобрать оставшуюся часть этикетки, содержащая B этикетки, все метки должны быть решены завершено, Mybatis повторно вынести помеченных как неразрешенный тег, а затем повторно синтаксический анализ времени метки A, B тег уже существует, то он может нормально решить ярлык сделано.

10. Описание взаимосвязи отображения между отображением файлом Mybatis Mybatis Xml и внутренней структурой данных?

Xml Mybatis вся информация о конфигурации инкапсулируется в All In-One-конфигурации тяжеловесных объектов внутри. В файле отображения Xml, ParameterMap метка анализируется в объекты, каждый суб-элемент будет проанализирован как объект ParameterMapping. ResultMap метка анализируется в объекты, каждый суб-элемент будет проанализирован как объект ResultMapping. Каждый <select>、<insert>、<update>、<delete> тэг будет проанализирован в качестве объектов MappedStatement, SQL внутри тега будет обрабатываться как объект BoundSql.

Справка: https://zhuanlan.zhihu.com/p/61432692

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

отwww.cnblogs.com/QuixoteY/p/10926640.html