Mybatis - отличная структура слоя настойчивости, которая поддерживает обычные запросы SQL, сохраненные процедуры и расширенное картирование. Mybatis устраняет ручные настройки почти всех кодов JDBC и параметров и поиск наборов результатов. Mybatis использует простые XML или аннотации для конфигурации и оригинального отображения для карты интерфейсов и Pojos Java (простые старые объекты Java) в записи в базе данных.
Mybatis - это проект с открытым исходным кодом Apache. В 2010 году этот проект был перенесен от Apache Software Foundation в Google Code и был переименован в Mybatis.
Мигрировал в GitHub в ноябре 2013 года, Mybatis 'Github Адрес: https://github.com/mybatis/mybatis-3.
Термин ibatis происходит из комбинации «Интернета» и «Abatis», и является основой на базирующейся на основе стойки на основе Java. Ibatis обеспечивает структуры уровня стойкости, включая карты SQL и объекты доступа к данным (DAO).
Каждое приложение Mybatis в основном использует экземпляры SQLSessionFactory, и экземпляр SQLSessionFactory может быть получен через SQLSessionFactoryBuilder. SQLSessionFactoryBuilder может быть получен из файла конфигурации XML или экземпляра предопределенного класса конфигурации.
1. Используйте генератор для автоматического генерации слоя DAO, уровня модели и слоя Mapper.
MyBatis Generator Адрес: http://www.mybatis.org/generator/
Mybatis Generator в Китайском введение: http://generator.sturgeon.mopaas.com/
В следующем используется плагин MyBatis-Generator-CORE-1.3.2.JAR для добавления пакета соединения базы данных JDBC для автоматического экспорта пакета DAO DAO, пакета модели и пакета Mapper.
Пакеты Java, которые необходимо использовать:
Mybatis-Generator-Core-1.3.2.jar,
MySQL-Connector-Java-5.1.34.jar,
OJDBC14-10.2.0.1.0.jar,
SQLJDBC4-4.0.JAR.
Файл конфигурации: Generator.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype GeneratorConfiguration public "-// mybatis.org//dtd mybatis Generator Configuration 1.0 // en" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dt.> <generator-genorferfig_1_0.1_0. Файл свойства конфигурации используется для введения переменных EL Expressions в файле конфигурации-> <!-Если вы запустите его в CMD, вы должны записать полный путь в URL, потому что ClassPath не может быть найден. Для ресурса-> <!-<Properties url = "file: /// d: /workspaces/mybatisgen/bin/generatorconfig.properties"/>-> <!-Расположение пакета драйверов базы данных-> <!-SQL Server Data Data Data Data Package-> <classPateNtry = "D: /JavoChoct/Generator/SQLJ-4.0. <!-Oracle Data Driver Package-> <!-<<ClassPathentry location = "d: /java/m2/repository/com/oracle/ojdbc14/10.2.0.1.0/ojdbc14-10.2.0.1.0.jar"/>-> <! location = "d: /javaproject/generator/mysql-connector-java-5.1.34.jar"/>-> <!-Здесь указывает этот DAO для mybatis3-> <!-id: должен быть настроен. Уникальный идентификатор этого контекста. Это значение будет использоваться в некоторых сообщениях об ошибках. DefaultModelType: используется для определения политики типа генеративной модели. 1. Кондиционирующая политика по умолчанию, генерируйте модельный класс для каждой таблицы 2.flat: Сгенерировать модельный класс из всех таблиц, то есть этот класс сохранит все поля из таблиц 3. Гирархический: если в таблице есть первичный ключ, модель будет генерировать первичный класс ключей, другой класс, который используется для размещения любых столбцов каплей в таблице и другого класса, который используется для размещения филдса. Это правильная связь между наследственными классами. TargetRuntime: Это свойство используется для указания кода, сгенерированного целевым временем выполнения. 1.mybatis3 значения по умолчанию будут генерировать объекты, которые совместимы с Mybatis версией 3.0, а затем и JSE 5.0, а затем (например, модели Java и интерфейсы Mapper будут использовать общие типы). Метод «по примеру» поддерживает почти неограниченную динамику, где положения на эти сгенерированные объекты. Кроме того, Java -объекты с этими генераторами поддерживают многие функции JSE 5.0, включая параметризованные типы и комментарии. 2.ibatis2java2 3.ibatis2java5-> <context id = "mysqltables" targetruntime = "mybatis3" defaultmodeltype = "условное"> <!-<плагин type = "org.mybatis.generator.plugins.equalshashcodeplesplessempless. Это свойство используется, чтобы указать, будут ли какие -либо комментарии включены в сгенерированный код. Если установлено в True, не генерируется никаких комментариев. 2. DipressDate Default по умолчанию в False Это свойство используется для указания, будет ли сгенерированный комментарий включать в себя метку времени генерации MBG. -> <Комментарийгенертор> <свойство name = "supressallComments" value = "true" /> < /commentGenerator> <!-URL ссылки на базу данных, имя пользователя, пароль-> <!-MySQL Link URL, имя пользователя, пароль-> <! ConnectionUrl = "jdbc: mysql: //127.0.0.1: 3310/test" userid = "test" password = "1234"> </jdbcconnection>-> <!-Oracle Database Link Url, usernaMe, пароль-> <! ConnectionUrl = "jdbc: oracle: thin:@127.0.0.1: 1521: orcl" userid = "test" password = "1234"> </jdbcconnection>-> <!-SQL Server Database Link Url, имя пользователя, пароль-> <jdbcconnection DriverClass = "com.microsoft.sqlserver.jdbc.sqlserverdriver" connectionUrl = "jdbc: sqlserver: //127.0.0.1: 1433; DatabaseName = test" userId = "test" пароль = 1234 "> </jdbcConection> <! key = "jdbc.url"> jdbc: h2: tcp: // localhost/test </intry> <intry key = "jdbc.driver"> key = "jdbc.url"> jdbc: microsoft: sqlserver: // localhost: 1433; databaseName = [Database] </inpit> <inpit key = "jdbc.driver"> com.microsoft.jdbc.sqlserver.sqlserverdriver </intry>-> <! key = "jdbc.url"> jdbc: sqlserver: //192.168.0.98: 1433; DatabaseName = [Database] </inpit> <inpiting key = "jdbc.driver"> com.microsoft.sqlserver.jdbc.sqlServerdriver </intrying> <! key = "jdbc.url"> jdbc: jtds: sqlserver: //192.168.0.102: 1433/[база данных]; TDS = 8,0; LastUpDateCount = true </intry> <intpirt key = "jdbc.driver"> net.sourceforge.jtds.jdbc.driver </intry. key = "jdbc.url"> jdbc: postgresql: // localhost/[database] </inpit> <inpit key = "jdbc.driver"> org.postgresql.driver </inpit>-> <!-sybase <intpirt key = "jdbc.Url"> jdbc: sybase: tds: tds: 5007/[5007/[jdbc. key = "jdbc.driver"> com.sybase.jdbc.sybdriver </intry>-> <!-db2 <intrint key = "jdbc.url"> jdbc: db2: // localhost: 5000/[database] </inpit> <inpit key = "jdbc.driver"> com.ibm.dbm. Hsqldb <intpirt key = "jdbc.url"> jdbc: hsqldb: mem: generatordb </inpit> <intpirt key = "jdbc.driver"> org.hsqldb.jdbcdriver </intrint>-> <!-derby <intry key = "jdbc.url"> jdbc: derby: // localhost <///cost <///cost <///cost <///cost <//cost <///cost <///cost <///cost <///cost <///cost <///cost <///cost <///costhost <///costhost <///costhost <///ряд. key = "jdbc.driver"> org.apache.derby.jdbc.clientdriver </intry>-> <!-Java Type Parser. Необязательная конфигурация-> <!-<javatyperesolver type = ""> Тип свойства: Это можно использовать для указания пользовательского пэска Java типа. Этот класс должен реализовать интерфейс org.mybatis.generator.api. Javatyperesolver, должен быть публичный конструктор по умолчанию. Свойство также может принять специальные значения по умолчанию в данном случае, реализация по умолчанию будет использоваться (тот же эффект не указывает тип). Свойства, поддерживаемые этим тегом: ForceBigDecimals: по умолчанию неверно, следует ли заставлять BigDecimal представлять все десятичные и числовые поля. • Если масштаб большая, а длина больше 18, будет использоваться большим образом. • Если его длина составляет от 10 до 18 лет, анализатор типа Java заменит java.lang.long. • Если длина составляет от 5 до 9, то анализатор типа Java будет заменен на java.lang.integer. • Если его длина составляет менее 5, синтаксический анализатор типа Java будет заменен Java.lang.Short. -> <javatyperesolver> <свойство name = "forcebigdecimals" value = "false" /> < /javatyperesolver> <!-генерировать объект vo-> <!-<javamodelgenerator> элементы используются для определения свойств, генерируемых моделями Java. Генератор модели Java создает таблицу, соответствующую классу первичного ключа, классом записей и классу образца запросов для самоанализа. Этот элемент является необходимым детским элементом <context> элемент. Поддерживаемые свойства: Constructorbared: это свойство используется для выбора того, будет ли генератор Mybatis генерировать конструктор класса, который принимает каждое поле в классе значений. Между тем, карты результатов SQL будут встроены в каждое поле, используя конструктор вместо «Setter». Это свойство применимо только к mybatis3 и будет проигнорировано для ibatis2. Значение по умолчанию неверно. Необычное: Необвисываемое, это свойство используется для выбора того, будет ли генератор mybatis генерировать неизменную модель класса - это означает, что класс не будет иметь метод «сеттера», а конструктор примет значение каждого поля в классе. По умолчанию ложь. Тримструнги: это свойство используется для выбора того, добавляет ли генератор Mybatis код, чтобы обрезать пустое пространство, возвращаемое из базы данных. Это полезно, если ваша база данных хранит данные в поле символов вместо поля Varchar. Генератор Mybatis вставит код для вырезания поля символов. Значение по умолчанию неверно. -> <!-Сгенерируйте имя пакета и местоположение класса Entity. Here, place the generated entity class under the package com.ouc.model--> <javaModelGenerator targetPackage="com.ouc.model" targetProject="D:/JavaProject/generator/src"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- Generate Картирование объекта для запроса-> <!-Сгенерировать имя пакета и местоположение сгенерированного файла карты SQL. Здесь поместите сгенерированный файл карты SQL в пакет com.ouc.mapping-> <sqlmapgenerator targetpackage = "com.ouc.mapping" targetproject = "d:/javaproject/Generator/Src"> <свойство name = "ensablesUbpackages" value = "true"/> </sqlmapGenarator> <! JavaclientGenerator> Элементы - это атрибуты, используемые для определения генераторов клиента Java. Генератор клиента Java используется для создания интерфейсов и классов Java, чтобы легко использовать сгенерированную модель Java и картирование XML. Для целевой среды IBATIS2 эти сгенерированные объекты принимают форму интерфейса DAO и классов реализации. Для Mybatis сгенерированный объект использует интерфейс Mapper. Этот элемент является необязательным дочерним элементом. Если вы не указали этот элемент, генератор Mybatis (MBG) не будет генерировать интерфейсы и классы Java. Где атрибут типа: если TargetRuntime IS MyBatis3 XMLMAPPER: Сгенерированный объект будет взаимодействовать интерфейс Java с инфраструктурой MyBatis 3.x Mapper. Интерфейс будет зависеть от сгенерированного файла Mapper XML. Как правило, этот XMLMapper используется. -> <!-Сгенерируйте имя пакета и местоположение DAO. Здесь сгенерированный класс DAO размещен в пакете com.ouc.dao-> <javaclientgenerator type = "xmlmapper" targetpackage = "com.ouc.dao" targetproject = "d:/javaproject/generator/src"> <proport name = "enablesubpackages" value = "true"/> </javacl nelector> <salebpackages 'value = "/> </javacl nelector> <! Выберите таблицу в базе данных. Выбранная таблица приведет к созданию следующих объектов для каждой таблицы: • A Mybatis/ibatis • Файл отображения форматированного SQL • Набор классов, которые формируют таблицу «Модель», включая: • класс для соответствия • Первичный ключ таблицы (если таблица имеет первичный ключ). • Поля в таблице совпадают не в первичном ключе, а не в поле Blob. Этот класс расширит первичный ключ, если он есть. • Класс для удержания поля Blob в любой таблице (если есть). Этот класс расширит первые два класса одного в зависимости от конфигурации таблицы. • Класс, используемый для генерации динамики, где положения, различные методы «по примеру» (SelectByexample, DeleteByExample). • (Необязательно) интерфейс DAO и класс таблицы: должно быть настроено имя указанной таблицы. DomainObjectName: основное имя сгенерированного Javabean -объекта. Если не указано, MBG будет автоматически генерироваться на основе имени таблицы. Это имя (независимо от того, указано здесь или автоматически сгенерировано) будет использоваться в качестве имени класса домена и имени класса DAO. ENABLEINSERT: Сделать ли сгенерирование оператора вставки. По умолчанию верно enableselectbyprimarykey: создать ли выбор оператора через первичный ключ. Независимо от того, есть ли такая настройка, если таблица не имеет первичного ключа, она не будет сгенерирована. enable updatebyprimarykey: создать операторы обновления через первичный ключ. Если таблица не имеет первичного ключа, оператор не будет генерироваться независимо от того, установлено ли свойство или нет. EnabledEleteByPrimaryKey: создать оператор DELETE через первичный ключ. Если таблица не имеет первичного ключа, независимо от того, что это свойство установлено, оператор не будет генерироваться. EnabledEleteByExample: создать оператор удаления через объект примера. Это объявление создает множество различных динамических делеций, генерируемых во время выполнения. eNableCountByExample: создать оператор для расчета количества строк через объект примера. Этот оператор возвращает пример, который соответствует количеству строк в таблице. enable updatebyexample: создать операторы обновления через объект примера. Этот оператор будет обновлять соответствующую запись в таблице. SelectByPrimaryKeyQueryId: это значение будет добавлено в список выбора, чтобы выбрать объявление первичным ключом в этой таблице: «<значение> как QueryId». Это можно использовать для идентификации запросов в DBA в инструменте отслеживания времени выполнения. Если вам нужно использовать, вам следует указать уникальный идентификатор для генерации MBG для каждого различного запроса. SELECTBYEXAMPLEQUERYID: это значение будет добавлено в список выбора, чтобы выбрать оператор по примеру в этой таблице: «'<значение> как QueryID». Это можно использовать для идентификации запросов в DBA в инструменте отслеживания времени выполнения. Если вам нужно использовать, вам следует указать уникальный идентификатор для генерации MBG для каждого различного запроса. EnablesElectbyExample: Должен ли оператор выбора сгенерировать примером? Это объявление создает множество различных динамических запросов, генерируемых во время выполнения. ModelType: Это свойство используется для переопределения типа модели по умолчанию, если вы хотите сделать это для этой таблицы. Если не указано, MBG будет генерировать объект домена на основе типа модели контекста по умолчанию. Этот тип модели определяет, как будет генерироваться класс домена MBG. Некоторые типы моделей MBGS генерирует один класс домена для каждой таблицы, а другие могут генерировать различные классы MBG в зависимости от структуры таблицы. Escapewildcards: исключить подстановки. Это означает, что схемы и названия таблиц SQL Wildcards ('_' и ' %') следует избегать в столбцах поиска. Это некоторые драйверы, которые требуют, чтобы, если схема или таблица содержит подстановочный знак SQL (например, если имя таблицы является my_table, некоторые драйверы требуют, чтобы подчеркивающие символы были сбежаны). --> <!-- To generate those tables (change tableName and domainObjectName) --> <table tableName="V_SupplyUser" domainObjectName="VSupplyUser" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" /> <table TABLENAME = "WJ_GATELIST" DomaInObjectName = "WJGatelist" eNableCountByexample = "false" enableUpdateByexample = "false" enabledEleteByexample = "false" enableselectbyexample = "false" selectByexamplequeryId = "false"/> </contect> </generatorCoverfigure> Откройте командную строку CMD, перейдите в файл, где находится файл конфигурации, и выполните следующее оператор генерации:
java -jar mybatis -Generator -core -1.3.2.jar -configfile Generator.xml -Overwrite
После выполнения команды вы можете увидеть, что в соответствующем пути генерируются пакет DAO, пакет модели и файлы пакета Mapper.
2. МИБАТИСА ФРИМАРЬ ВЕСТИЧЕНИЯ
1) Mybatis использует конфигурацию параметров: sqlmapconfig.xml.
① Конфигурация кэша (кэш): Cacheenabled: глобальный переключатель: по умолчанию верно. Если он настроен как false, бесполезно настраивать другие файлы Mapper XML для поддержки кэша.
② Задержка загрузки:
LazyLoadingEnabled: True использует ленивую загрузку, False отключает ленивую загрузку, по умолчанию верно, когда отключено, все связанные объекты будут загружены мгновенно.
Когда AggresvesiveLazyLoad: True включена, при доступе к свойству Lazy Object в объекте при включении ленивой загрузки все свойства ленивого объекта этого объекта будут полностью загружены. ЛОЖЬ. При загрузке задержек загружайте свойства объекта по мере необходимости (то есть, доступ к свойству Lazy Object в объекте, и другие свойства Lazy Object в объекте не будут загружены). По умолчанию верно.
③ MultipleresElceSetabled: разрешить и не разрешать одному оператору возвращать несколько наборов данных (в зависимости от требований драйвера). По умолчанию верно.
④ USECOLUNMLABEL: Используйте метки столбцов вместо имен столбцов. Разные диски имеют разные подходы. Обратитесь к документации или протестируйте ее с помощью этих двух разных вариантов.
⑤ Использование GeneratedKeys: позволяет JDBC генерировать первичные ключи. Требуется поддержка привода. Если установить True, этот настройка заставит сгенерированный первичный ключ, некоторые диски несовместимы, но все еще могут быть выполнены.
⑥ AutompapingBehavior: указывает, автоматически ли MyBatis отображает поля таблицы данных и свойства объектов. Частичный будет только автоматически отображать простые, без вложенных результатов. Полный будет автоматически отображать все сложные результаты.
⑦ Defaultexecutortype: настраивает и устанавливает исполнителя, а простой исполнитель выполняет другие операторы. Исполнитель повторного использования может повторно использовать подготовленные операторы, а исполнитель партии может повторить операторы и обновления партии.
⑧ DefaultStatementTimeout: Установите ограничение по времени, чтобы определить, как долго диск ожидает, пока база данных ответит на тайм -аут.
Полный файл конфигурации sqlmapconfig.xml выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><settings><setting name="cacheEnabled" value="true" /><setting name="lazyLoadingEnabled" value="true" /><setting name="multipleResultSetsEnabled" value="true" /><setting name="multipleResultSetsEnabled" value="true" /><setting name="useColumnLabel" value="true" /><setting name="useGeneratedKeys" value="false" /><setting name="autoMappingBehavior" value="PARTIAL" /><setting name="defaultExecutorType" value="SIMPLE" /><!-- SIMPLE REUSE BATCH --><!-- <setting name="defaultExecutorType" value="BATCH" /> --><setting name="defaultStatementTimeout" value="" /><setting name="safeRowBoundsEnabled" value="false" /><setting name="mapUnderscoreToCamelCase" value = "false" /> <name = "localcachescope" value = "session" /> <!-<Настройка name = "jdbctypefornull" value = "fore" />-> <name = "jdbctypefornull" value = "null" /> <satud name = "lazyliggermethods" /> </settings> <TypeAliases> <!-Module-> <typealias alias = "user" type = "com.ouc.mkhl.platform.authority.model.user"/> <typealias alias = "kery" type = "model.platform.authority.model.role"/> <typalias a a authors a a authors. type = "com.ouc.mkhl.platform.basedata.model.equipment"/> <typealias alias = "factory" type = "com.ouc.mkhl.platform.basedata.model.factory"/> </typealiases> <typehandlers> <typehandler handler = "com.ouc.openplatform.dao.mybatis.serializabletypehandler"/> </typehandlers> </configuration>
Сериализация Специальная обработка ценности: serializabletypehandler
пакет com.ouc.openplatform.dao.mybatis; import java.io.serializable; import java.sql.callablestatement; импорт java.sql.preparedStatement; импорт java.sql.resultset; import java.sql.sqlexception; org.apache.ibatis.type.jdbctype;/*** @author wuping*/public class serializabletypehandler extends basetypehandler <serializable> {@overridepublic void setnonnullparameter (подготовленный ps, int i, serializable parameter, Jdbcctypepepementement PS, Int I, Serializable, JDBCTEPEPEREPEMEMEPETEMEMEMENTEMEMENTEMEMENTEMEMENTEMEM {ps.setObject(i, parameter);}@Overridepublic Serializable getNullableResult(ResultSet rs, String columnName)throws SQLException {return (Serializable)rs.getObject(columnName);}@Overridepublic Serializable getNullableResult(ResultSet rs, int columnIndex)throws SQLException {return (Serializable) rs.getObject (columnIndex);}@overridePublic serializable getNullablerSult (callableStatement CS, int columnIndex) Throws Sqlexception {return (serializable) cs.getObject (columnIndex);}} 2) Набор результатов результата результата:
При выборе отображения в mybatis тип возврата может использоваться с ResultType или ResultMap. ResultType непосредственно представляет тип возврата, в то время как ResultMap является ссылкой на внешнюю карту результата, но ResultType и ResultMap не могут существовать в одно и то же время. Когда Mybatis запрашивает отображение, на самом деле, каждый запрос атрибута помещается в соответствующую карту, где ключ - имя атрибута, а значение - его соответствующее значение. Когда предоставляемый атрибут возврата типа является ResultType, Mybatis извлечет пары значений ключей на карте и назначит их соответствующим атрибутам объекта, указанного RestultyPe. Таким образом, фактически, тип возврата каждой карты запросов Mybatis является картой результата. Однако, когда атрибут типа возврата, который мы предоставляем, является ResultType, Mybatis автоматически присваивает соответствующее значение атрибутам объекта, указанного в результате ResultType. Когда тип возврата, который мы предоставляем, является ResultMap, поскольку карта не может хорошо представлять модель домена, нам необходимо дополнительно преобразовать ее в соответствующий объект сами, что часто очень полезно в сложных запросах.
Пример: userBaserSultMap
<resultMap id = "userBaserSultMap" type = "user"> <id column = "id" property = "id" jdbctype = "integer" /> <result column = "username" property = "username" jdbctype = "varchar" /> <result column = "parport" parport "jdbcctepe =" varchar " /> <result column =" password "" jdbcccepe = "varchchar" /> <result = "password" "jdbccc jdbctype = "varchar" /> <result column = "trueName" Property = "trueName" jdbctype = "varchar" /> <result column = "sex" property = "sex" jdbctype = "varchar" /> <result column = "age" property = "age" jdbctype = "intege" /> <result column = "result wephone" = "result vephone" = "result vephone" = "result vephone" = "result" = "result" = "result". jdbctype = "varchar" /> < /resultMap>
Класс модели: пользователь
пакет com.ouc.mkhl.platform.authority.model; import java.io.serializable; // Информация пользователя открытый класс Пользователь реализует serializable {private static final long serialversionuid = 1098321123L; частное целочисленное идентификатор; // Идентификатор пользователя Private String UserName; // имя пользователя частная строка пароль; // Имя пользователя Private String Email; // электронная почта частной строки TrueName; // настоящее имя частное строковое секс; // гендерный частный целый возраст; // возраст частный строковый телефон; // мобильный телефон public integer getId () {return id; } public void setId (Integer id) {this.id = id; } public String getUsername () {return username; } public void setUsername (String username) {this.username = username == null? null: username.trim (); } public String getPassword () {return пароль; } public void setPassword (String пароль) {this.password = password == null? null: password.trim (); } public String getEmail () {return Email; } public void setEmail (string email) {this.email = email == null? null: email.trim (); } public String getTrueName () {return TrueName; } public void setTruEname (String TrueName) {this.truename = trueName == null? null: truename.trim (); } public String getSex () {return Sex; } public void setSex (строка Sex) {this.sex = sex == null? null: sex.trim (); } public integer getage () {return Age; } public void setage (целый возраст) {this.age = age; } public String getTelephone () {return Telephone; } public void settelephone (строка телефон) {this.telephone = телефон == null? null: телефон.trim (); }} 3) Добавить, удалить, изменить и проверить:
(1) Выберите запрос:
① ID: уникальный идентификатор в этом режиме может быть направлен на другие утверждения.
② Parametertype: полное имя класса или псевдоним параметра, передаваемого этому утверждению.
③ ResultType: оператор возвращает все имя класса или псевдоним типа значения. Обратите внимание, что если это коллекция, то здесь заполнено все название класса или псевдоним элемента, а не название класса самой коллекции. (ResultType и ResultMap нельзя использовать вместе)
④ Result Map: ссылочное внешнее имя Result Map. Картирование набора результатов - самая мощная особенность в Mybatis. Многие сложные отображения могут быть легко решены. (ResultType и ResultMap нельзя использовать вместе)
⑤ FlushCache: если установить True, кэш будет очищен каждый раз, когда будет вызоваться оператором. Оператор SELECT установлен на FALSE по умолчанию.
⑥ USECACHESH: если установить на TRUE, набор результатов оператора будет кэширован. Оператор SELECT установлен на FALSE по умолчанию.
⑦ Тайм -аут: установите максимальное время, когда привод ждет ответа, прежде чем бросить исключение. По умолчанию не установить значение, и диск решает его сам.
Пример: Запрос всех пользовательских информации: SelectUsers
<select id = "selectUsers" resultMap = "userBaserSultMap"> SELECT ID, имя пользователя, электронная почта от пользователя </select>
(2) Вставьте вставку: SaveUser
Здесь в таблице базы данных используется первичный ключ, чтобы увеличить себя, а первичный ключ - ID.
① FetchSize: После настройки значения диск будет рад вернуться после того, как количество наборов результатов достигнет этого значения. По умолчанию не установлено, что определяется самим диском.
② ApportType: оператор, подготовленный оператор, CallabLestatement. Подготовленные заявления, выводящие заявления.
③ Использование GeneratedKeys: Используйте метод JDBC GetGeneratedKeys для получения первичной ключа, сгенерированной самой базой данных (MySQL, SQLServer и другие реляционные базы данных будут иметь поля, которые будут создаваться автоматически).
④ KeyProperty: идентифицирует значение, возвращаемое ключом, которое будет установлено в GetGeneratedKeys MyBatis, или используйте дочерний элемент SelectKey для оператора вставки.
<insert id = "saveUser" parameterType = "user"> insert в пользовательские (имя пользователя, пароль, электронную почту, трюна, пол, возраст, телефон) значения ( #{username, jdbctype = varchar}, #{пароль, jdbctype = varchar}, #{электронная почта, jdbccype = varchar #{truename, jdbctype = varchar}, #{sex, jdbctype = varchar}, #{age, jdbctype = integer}, #{телефон, jdbctype = varchar}) </insert> (3) Обновление обновления: динамическое обновление SQL: UpdateUser
<Update id = "updateUser" parameterType = "User"> обновление пользователя <set> <if test = "username! = null"> username = #{username, jdbctype = varchar}, </if> <if test = "пароль! #{email, jdbctype = varchar}, </if> <if test = "trueName! = null"> trueName = #{trueName, jdbctype = varchar}, </if> <if test = "sex! #{age, jdbctype = integer}, </if> <if test = "telephone! = null"> telephone = #{телефон, jdbctype = varchar}, </if> </set> где id = #{id, jdbctype = integer} </uppost> (4) DELETE DELETE: DELETEUSER
<delete id = "deleteUser" parametertype = "Integer"> Delete из пользователя идентификатора = #{id, jdbctype = integer} </delete> (5) SQL: элемент SQL используется для определения многоразового сегмента операторов SQL для других операторов для вызова.
<sql id = "userbasecolumnlist"> Имя пользователя, пароль, электронная почта, телефон </sql> <select id = "getUsers" resultMap = "userBaserSultMap"> SELECT <Incule RefID = "userBaseColumnList"/> из пользователя </select>
(6) Параметры: Параметры: Mybatis может использовать основные типы данных и сложные типы данных Java.
Основные типы данных, строка, инт, дата и т. Д.
Использование основных типов данных может предоставить только один параметр, поэтому вам необходимо использовать класс Java Entity или тип карты в качестве типа параметра. Его атрибуты могут быть получены непосредственно через #{}.
① Основные параметры типа данных: строка
<select id = "getUserbyName" resultType = "user" parametertype = "string"> select id, username, электронная почта из пользователя, где username = #{username, jdbctype = varchar} </select> Код Java:
Общественный пользователь GetUserByName (String name); // Получить информацию пользователя на основе имени пользователя
② Параметр типа объекта Java: Пользователь
<insert id = "saveUser" parameterType = "user"> insert в пользовательские (имя пользователя, пароль, электронную почту, трюна, пол, возраст, телефон) значения ( #{username, jdbctype = varchar}, #{пароль, jdbctype = varchar}, #{электронная почта, jdbccype = varchar #{truename, jdbctype = varchar}, #{sex, jdbctype = varchar}, #{age, jdbctype = integer}, #{телефон, jdbctype = varchar}) </insert> Код Java:
public int saveUser (пользователь пользователя); // вставить информацию пользователя
③ Параметры карты: map <string, объект> recordmap
<SELECT ID = "SELECTCHILDGROOTOTALNUM" RESTORATYPE = "Integer"> SELECT COUNT (*) из GroupInfo <trim prefix = "где" prefixoverrides = "и | или"> и id в <foreach collection = "idstr" item = "open =" ("sepator =", "close =") "> # #{ids} </ids} </ids} </ids} </ids} </ids} </ids} </ids} </ids} </ids} </iDs} </iDs} </ids ateACH> name! = '''> и имя, как concat (concat ('%', #{name}), '%') </if> <if test = "description! = NULL и описание! = ''"> и описание как concat (concat ('%', #{description}), '%') </if> <if test = null! #{type, jdbctype = integer} </if> <if test = "Категория! = null и категория! =-1"> и категория = #{категория, jdbctype = integer} </if> </trim> </select> Код Java:
// Получить общее количество записей в подгруппах public int selectchildgrouptotalnum (map <string, object> record -map); Map <string, object> recordmap = new Hashmap <string, object> (); recordmap.put ("idstr", group.getChildGroupids (). Split (",")); recordmap.put ("name", name); recordmap.put ("description"); groupdao.selectchildgrouptotalnum (recordmap); ④ Несколько параметров:
Метод 1: Пропустите параметры по порядку.
<!-Параметры запроса на основе имени параметра-> <select id = "selectsensornobysensorname" refultype = "integer" usecache = "false" flushcache = "true"> selectorno from sensorconfig, где name = #{0} и testunitno = #{1} и labcode = #{2} </selet> #selet> # Код Java:
// Запросить параметр idpublic int selectsensornobysensorname (string sensorname, int testunitno, string labcode);
Метод 2: Добавьте аннотацию @param в параметры интерфейса.
<select id = "selectbyusernameandvcode" resultMap = "userBaserSultMap"> select Id, имя пользователя из пользователя <trim prefix = "где" prefixoverrides = "и | или"> <if test = "username! = Null и username! test = "Pulfierno! = null и Pulfierno! = ''"> и Pulfierno like concat (concat ('%', #{upplierno}), '%') </if> и uffierno! = 'test' </trim Код Java:
// Запрос информации пользователя на основе имени пользователя и V Code Public List <user> selectByuserNameAndvcode (@param ("username") String username,@param ("supplierno") string sopplierno,@param ("startindex") int startindex, @param ("PageSize") int PageSize); 4) Динамический оператор SQL:
SelectKey Tag, если тег, условное суждение if + где, обновление оператора if + set, if + trim заменяет, где/установить тег, отделка заменяет, выберите (когда, иначе), тег Foreach. Динамические операторы SQL являются наиболее гибкой частью Mybatis, и очень удобно использовать их хорошо.
Пример: SELECTTOTALNUMBYACCOUNTTYPE
<select id = "selecttotalnumbyaccounttype" refultype = "integer"> select count (*) из пользователя <trim prefix = "где" prefixoverrides = "и | или"> и id не в <foreach collection = "idstr" item = "ids" open = "(" sepator = "," close = ")"> # # #{ids} </ids} </ids} </id. null и username! = '' "> и имя пользователя, как concat (concat ('%', #{username}), '%') </if> <if test =" upplierno! TrueName! = '' "> и TrueName Like Concat (concat ('%', #{trueName}), '%') </if> и accountType = #{accountType} </trim> </selet>Вышесказанное - это краткое изложение знаний об использовании структуры постоянного слоя Mybatis, введенной вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!