1.mybatis в # {} и $ {} разница?
Ответ :
Определение: # {} прекомпилируется.
Действие: MyBatis процесс # {} в то время, SQL заменит его ? , Затем вызовите PreparedStatement в набор назначение метода, также может предотвратить SQL инъекции.
Примечания: SQL инъекция инъекция атака может выполнить вредоносный SQL заявление. По SQL в коде запросов к базе данных, так что злоумышленник может контролировать веб - сервисы базы данных за серверным приложением , может быть несколько операций по базе данных. Такие , как добавление, изменение и удаление данных в базе данных.
Определения : $ {} строка подстановки.
Действие: MyBatis процесс $ {} в то время, SQL заменит его со значением переменной.
2.mybatis Есть несколько способов разбиения на страницы?
: Есть четыре, а именно массив пейджинга, SQL пейджинг, пейджинговые перехватчики, RowBounds страницы.
3.mybatis разница между физическими и логическими страницами подкачки?
Ответ :
Определение: физическая страница зависит от физического лица, что объект является базой данных, такими как MySQL база данных обеспечивают предельные ключевые слова, писать о программистах ограничить ключевые слова запроса, база данных будут возвращать страничный результаты.
Определения : логическая страница код , написанный программистом, а не результаты , вызов которого возвращаемые база данных, но все данные и выгружаемые данные , полученные с помощью кода программиста. Общие одноразовые операции запроса хранить все данные списка набора, и получения данных диапазона , указанного индекса,
Сравнение между этими двумя:
- Бремя базы данных: доступ к базе данных, поскольку каждый физический запрос страницы, и логическая страница только запросу в базе данных один раз, поэтому большая нагрузка на базе данных, вызванная физической страницей.
- Сервер загрузки : логическая страница разовый читать данные в памяти, занимая больший объем памяти, физические страницы чтения за одно посещение только часть данных , базы данных, занимают меньше места в памяти, поэтому логической страницы большей нагрузки на сервер ,
- В режиме реальное время: логический данные страницы считывается в память в одно время, когда изменения данных, база данных не будет отражены в реальное время до последнего состояния операции, разницы в реальное время, необходимо получить доступ к базе данных для физической страницы каждый раз, когда он нуждается в данных при изменении данных, последнее состояние базы данных для отражения операции в режиме реального времени, так что производительность в режиме реального времени.
- Применение: логическая страница для небольшого количества данных и случае, когда данные стабильные, объем данных, применимых к физической странице часто обновляются случаи.
Примечание: MyBatis из RowBounds вкладки с помощью логической страницы, то смещение и ограничения вырезать вкладку запись и возвращает результаты. Но это вызовет переполнение памяти при обработке больших объемов данных.
4. ОПИСАНИЕ mybatis кэш и вторичный кэш?
Ответ: Кэш: он основан на PerpetualCache / [pə petʃuəl] [kæʃ] из HashMap локального запоминающего устройства, его объем хранится в сессии . Когда вровень Session или близко после этой сессии все из кэша будут удалены. Уровень кэш включен по умолчанию.
Кэш и механизм кэш - памяти, основаны PerpetualCache на HashMap локальное запоминающее устройство, в котором сфера отличается от сохраненного Mapper ( в пространстве имен ), и может быть пользовательский источник хранения. Вторичный кэш не открывается по умолчанию, если вы хотите , чтобы открыть кэш второго уровня, требуется два класса атрибута кэша для достижения сериализуемого / [ sɪərɪəlaɪzəbl] последовательных интерфейсов.
Для механизма обновления для кэширования данных: Когда область применения дополнений и удаления в кэш по умолчанию всех запросы будут удалены в рамках.
5. На спящем режиме и mybatis разницы?
Ответ: Hibernate является популярным ORM ( Object Relational Mapping) структура, структура базы данных для более полного пакета.
Mybatis также популярны ORM рамки, основное внимание POJO и SQL отображение между ними. POJO представители простых случайных ява объектов, в традиционном смысле чистого Java объектов, самый основной Java боб только атрибут с помощью атрибута GET и набора методов, могут быть преобразованы ро, DTO, Vo.
1. Самая большая разница между этими двумя: для простых запросов, спящий режим и mybatis имеют соответствующего генератора кода может генерировать, по существу , дао код уровня.
针对高级查询:mybatis需要手动去写SQL语句,以及ResultMap;而hibernate有良好的映射机制,开发者不需要关心sql生成和映射结果,可以更加关注业务流程。
2.开发难度对比:hibernate的开发难度大于mybatis,因为hibernate比较庞大复杂,而且学习周期比较长。而mybatis就比较简单,且它比较依赖于sql的书写,可以让开发者更加熟悉。
举一个形象的比喻:
Mybatis:机械工具,使用方便,拿来就用,但是工作还是要自己来做,不过工具是活的,怎么用由自己决定。
Hibernate:智能机器人,但研发(学习,熟练度)它的成本高,工作都可以交给它,但仅限于它能作的事。
6.Mybatis分页插件的实现原理是什么?
答:分页插件的基本原理是使用mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方法,添加相应的物理分页语句和物理分页参数。