О генераторе Mybatis
Mybatis Generator (MBG) - это генератор кодов Mybatis Mybatis и Ibatis. Он может генерировать код для различных версий Mybatis и кода после ibatis 2.2.0. Он может индивидуально проверять таблицы (или таблицы) базы данных, а затем генерировать базовый объект, который можно использовать для доступа к таблицам (множеству) таблиц. Таким образом, никакие объекты и файлы конфигурации не требуются при взаимодействии с таблицами базы данных. MBG решает некоторые простые операции CRUD (вставка, запрос, обновление, удаление), которые оказывают наибольшее влияние на операции базы данных. Вам по -прежнему нужно от руки SQL и объекты по запросу Федерации и хранимых процедур.
Mybatis Generator будет генерировать:
Структуры соответствующих столов Java Pojos могут включать в себя:
Между этими классами будет соответствующая связь наследования. Обратите внимание, что генератор может быть настроен для создания иерархий различных типов POJO. Например, если вы предпочитаете, вы можете создать отдельный объект объекта для каждой таблицы.
Mybatis/ibatis, совместим с SQL-картинами XML-файлами. MBG генерирует SQL в конфигурации для простых операций CRUD для каждой таблицы. Сгенерированные операторы SQL включают:
В зависимости от структуры таблицы, сгенерированные операторы будут варьироваться (например, если в таблице нет первичного ключа, то MBG не будет генерировать обновление методом первичного ключа).
Класс клиента Java будет использовать приведенный выше объект соответствующим образом и является необязательным при генерации класса клиента Java. MBG генерирует следующий класс клиента для Mybatis 3.x:
Класс интерфейса Mapper, который можно использовать с mybatis 3.x
MBG генерирует следующий клиент -класс для ibatis 2.x:
Класс DAO, который соответствует весенней структуре.
Используйте только DAO API IBATIS SQL. Это DAO может быть сгенерировано следующими двумя способами: предоставить SQLMAPClient с помощью методов строительства или впрыска сеттера.
DAO, соответствующий Framework Ibatis Dao (дополнительная часть ибатиса, которая устарела, мы рекомендуем вам использовать Spring Framework).
Генератор Mybatis может хорошо работать в итеративной среде разработки и выступать в качестве задачи ANT или подключаемого модуля Maven в среде непрерывной сборки. Следующие важные вещи, которые нужно помнить при запуске MBG:
MBG автоматически объединит XML, который уже существует и дублируется с недавно сгенерированным файлом. MBG не перезаписывает модификации, которые вы внесли в XML, который вы сгенерировали. Вы можете запускать его снова и снова, не беспокоясь о потере ваших пользовательских изменений. MBG заменит все элементы XML, сгенерированные в предыдущих пробегах.
MBG не объединяет файлы Java, он может перезаписать существующие файлы или сохранять вновь сгенерированные файлы с другим уникальным именем. Вы можете объединить эти изменения вручную. Когда вы используете плагин Eclipse, MBG может автоматически объединять файлы Java.
Основное использование
MBG в основном полагается на файл конфигурации XML. Во-первых, мы можем воссоздать новый проект под названием MyBatisGenerator, создать три новых пакета с именем Config, David.Test и David.mbg. Пакет конфигурации в основном хранит файлы конфигурации, необходимые в реальной Mybatis. Вы можете скопировать mybatis_demo_config.xml в проекте в предыдущих главах и поместить его в этот каталог и т. Д. Для программ тестирования. Как следует из названия, David.Test - хранить следующие часто используемые методы и программы испытаний. Вы также можете использовать класс инструментов Mybatisutils в предыдущих главах и создать соответствующую материальную функцию для целей тестирования. И последний David.mbg - это XML, который мы собираемся настроить сегодня, и MBG генерирует файл конфигурации.
Как показано на рисунке, мы создали новый файл конфигурации с именем mbg_configuration.xml ниже. Детали следующие:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype GeneratorConfiguration public "-// mybatis.org//dtd Mybatis Generator Configuration 1.0 // en" <classpathentry location = "./ lib /mysql-connector java-5.1.26-bin.jar" /> <context id = "mybatisdemoformysql" targetruntime = "mybatis3"> <!-Control Comments-> <Complygenerator> <! Удалите временные метки всех автоматически сгенерированных файлов по умолчанию в False-> <name = "supressDate" value = "true" /> < /commentgenerator> <!-База данных управления-> <jdbcconnection driverclass = "com.mysql.jdbc.driver" ConnectionUrl = "jdbc: mysql: //127.0.0.1: 3306/mybatis_db? Характерпольтинг = utf8" userId = "root" пароль = "david0110"/> <javatyperesolver> <!-конвертировать и численные типы jdbc в integer-types-> <ficebiM viosmal "/forsem. < /javatyperesolver> <!-Модель, соответствующая таблице баз данных-> <javamodelgenerator targetPackage = "david.Model" <sqlmapgenerator targetpackage = "david.mappers" targetProject = "src"> <name = "enablesubpackages" value = "true" /> < /sqlmapgenerator> <!-контроль интерфейса Mapper-> <JavaclientGenerator TargetPackage = "david.Inter" type = "xmlmapper" argetPrcoe ">" yargePrace ">" sprodecret ">" xrMAPPERT ">" yargetPrace ">" xrMAPPERT "<> <javaclientGenerator =" David.Inter. name = "enablesBpackages" value = "true" /> <name = "methodnamecalculator" value = "Extended" /> < /javaclientgenerator> <!-Схема для вашей базы данных, TableName указывает, что DomainObjectName соответствует вашему Javabean Class, независимо от того, является ли соответствующий пример-> <Table Schema chema = "myBatis_" DABATES ". domainObjectName="Visitor" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <generatedKey column="id" sqlStatement="MySql" /> <columnOverride column="name" property="visitor_name" /> <engorecolumn colun = "status" delimitedcolumnname = "false"/> </table> </context> </generatorConfiguration>
Вы можете заметить, что это в основном эти узлы
<ClassPathentry> => Местоположение, где хранятся пакет драйверов JDBC, может использоваться для использования относительных путей или абсолютных путей. В этом примере используется относительный путь.
<Stext> => Сделано в соответствии с конфигурацией всех таблиц в базе данных, может быть несколько контекстов, одна конфигурация MySQL и одна конфигурация Oracle.
Основными в рамках узла <Stext> являются:
<CommentGenerator> => узлы генератора комментариев, 2 подтепля в этом примере представляют
SuppressallComments => «Удалить все автоматически сгенерированные файлы комментариев
SuppressDate => «Удалить временные метки всех автоматически сгенерированных файлов» по умолчанию в False
<jdbcconnection> => Информация о конфигурации подключения к базе данных
<javatyperesolver> => преобразовать десятичные значения и типы чисел в jdbc в java.math.bigdeciaml
<javamodelgenerator> => Настройте свой класс POJO Entity, TargetPackage = "David.Model", что соответствует вашей регистрации, вы можете назвать его в соответствии с фактическим бизнесом, targetProject = "src". В среде Eclipse путь к папке проекта и источника обычно называют каталогом SRC. Ваш пакет будет недавно создан в этом каталоге. Если это не среда Eclipse, значение здесь должно быть фактический путь файловой системы. Если указанный путь не существует, сообщается об ошибке, потому что MBG не будет создавать соответствующую папку сама по себе
<sqlmapgenerator> => Настройка для генерации соответствующей объекта mapper.xml. Для mapper3.x нам нужно введите = "xmlmapper"
<javaclientgenerator> => configure генерирует соответствующий класс интерфейса, соответствующий серии операторов SQL метода CRUD в mapper.xml
<Table> => Настройка соответствующей базы данных, которая указывает, что имя класса домена (то есть имя класса объекта). В этом примере я закрыл всю ненужную информацию об генерации.
Вся приведенная выше информация может быть проверена на официальном веб -сайте для соответствующих документов или загружена в моем файле, с соответствующими инструкциями по конфигурации и соответствующими примерами приложения. Загрузите документ
После настройки приведенной выше информации, каков последний шаг? Мы собираемся запустить этот файл скрипта. В официальном описании есть 4 способа. Первый - это метод командной строки, второй и третий генерируются с помощью таких инструментов, как Ant или Maven. Последний генерируется через код Java. Мы используем метод генерации через ячмень Java. Метод добавления сгенерированного сценария в класс Demorun выглядит следующим образом:
private static void GenerateMbgConfiguration () { /** Mybatis поставляется с инструментом генератора для генерации соответствующей вещи* / list <string> Warnings = new ArrayList <string> (); Boolean Overwrite = true; File configfile = new File ("./ src/david/mbg/mbg_configuration.xml"); ConfigurationParser CP = New ConfigurationParser (предупреждения); Конфигурация config = null; try {config = cp.parseconfiguration (configfile); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (xmlparserexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } DefalcehellCallback обратный вызов = new DefalceHellCallback (перезапись); try {mybatisgenerator mybatisgenerator = new mybatisgenerator (config, обратный вызов, предупреждения); mybatisgenerator.generate (null); } catch (InvalidConfigurationException e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (sqlexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (прерванная экспрессия e) {// todo автоматически сгенерированный блок e.printstacktrace (); } System.out.println («Конфигурация Mybatis была успешно сгенерирована!»); } После запуска обновите проект, вы обнаружите, что следующее волшебным образом генерирует основную конфигурацию для вас. Секция красной коробки на рисунке ниже:
Наконец, давайте используем автоматически сгенерированные результаты. Мы можем обратиться к первым шести главам, чтобы добавить соответствующий метод испытания CRUD в DeMorun следующим образом:
/** Запрос информации о посетителях*/ public static void testgenerateadd () {sqlsession session = mybatisutils.getsqlsession (); VITEMARPPER VOPERATION = SESSION.GETMAPPER (VITEMARPPER.CLASS); Посетитель посетителя = новый посетитель (); visitor.setvisitor_name ("hello2"); visitor.setemail ("[email protected]"); Visitor.SetCreatEtime (New Date ()); int count = voperation.insert (посетитель); session.commit (); Mybatisutils.closesession (сессия); Mybatisutils.showmessages (crud_enum.add, count); } /** Информация о посетителе запроса* / public static void testGeneratequery (int id) {sqlSession session = mybatisutils.getsqlsession (); VITEMARPPER VOPERATION = SESSION.GETMAPPER (VITEMARPPER.CLASS); Посетитель посетителя = VOPERCER.SELECTBYPRIMARYKEY (ID); Mybatisutils.closesession (сессия); Mybatisutils.showmessages (crud_enum.query, 1); System.out.println (посетитель); } public static void testGeneratedElete (int id) {sqlSession session = mybatisutils.getSqlSession (); VITEMARPPER VOPERATION = SESSION.GETMAPPER (VITEMARPPER.CLASS); int count = voperation.deletebyprimarykey (id); session.commit (); Mybatisutils.closesession (сессия); Mybatisutils.showmessages (crud_enum.delete, count); } public static void testGenerateUpdate (int id) {sqlSession session = mybatisutils.getSqlSession (); VITEMARPPER VOPERATION = SESSION.GETMAPPER (VITEMARPPER.CLASS); Посетитель посетителя = VOPERCER.SELECTBYPRIMARYKEY (ID); System.out.println (посетитель); String name = vititor.getVisitor_name (); if (name.contains ("update")) {visitor.setVisitor_name (name.substring (0, name.indexof ("update"))); } else {visitor.setVisitor_name (name + "update"); } int count = voperation.updatebyprimarykey (посетитель); session.commit (); Mybatisutils.closesession (сессия); Mybatisutils.showmessages (crud_enum.update, count); System.out.println (посетитель); } Запустите тестовую программу, и результат
Считаете ли вы, что использование этого помогло вам значительно повысить свою эффективность, и вам не нужно беспокоиться о громоздких конфигурациях. По крайней мере, вам не нужно делать повторяющиеся и ненужные шаги. Пусть они будут оставлены на инструменты, чтобы сделать^0^. Конечно, в фактическом использовании нам может потребоваться изменить соответствующую информацию класса и имена информации интерфейса после генерации. Конечно, эти рабочие нагрузки не слишком много. Я надеюсь, что это содержимое будет полезно для студентов, которым нужно настроить их сегодня.