Большинство разработчиков, которые используют Mybatis, столкнутся с проблемой, которая состоит в том, чтобы написать большое количество SQL в файле XML. В дополнение к специальной бизнес -логике SQL, существует также большое количество SQL с аналогичными структурами. Более того, когда структура таблицы базы данных меняется, все соответствующие классы SQL и объекта должны быть изменены. Влияние этой рабочей нагрузки и эффективности может быть препятствием между добавлением, удалением, изменением и проверкой программистов и реальными программистами. В настоящее время генерал Mapper появился ...
Что такое универсальный карт
General Mapper-это плагин, основанный на mybatis для решения проблемы добавления, удаления, изменения и поиска отдельных таблиц. Разработчикам не нужно писать SQL или добавлять методы в DAO. Пока они хорошо пишут класс объектов, они могут поддерживать соответствующие методы добавления, удаления, изменения и поиска.
Как использовать
Принимая MySQL в качестве примера, предположим, что есть такая таблица:
Создать таблицу `test_table` (` id` Bigint (20) не null auto_increment, `name` varchar (255) default '' ',` create_time` dateTime null, `create_user_id` varch `is_delete` int (8) NOLL NULL, первичный ключ (` ID`)) Engine = innoDB auto_increment = 1 default charset = utf8;
Основным ключом является ID, который сам по себе увеличивается. Вот таблица в качестве примера, чтобы представить, как использовать универсальный Mapper.
Зависимости Maven
<!-General Mapper-> <Dependency> <groupId> tk.mybatis </GroupId> <strifactid> mapper </artifactid> <sersive> 3.3.9 </version> </deperency>
Конфигурация SpringMVC
<!-General Mapper-> <beanclass = "tk.mybatis.spring.mapper.mapperscannerConfigurer"> <proportname = "basepackage" value = "cn.com.bluemoon.bd.service.spider.dao"/> <propertyName = "operties"> <value> mappers = tk.my.mapper.mapper.mo </value> </property> </bean>
Обратите внимание, что здесь используется tk.mybatis.spring.mapper.MapperScannerConfigure для замены оригинального Mybatis org.mybatis.spring.mapper.MapperScannerConfigurer .
Доступны параметры:
В большинстве случаев эти параметры не будут использоваться, и вы можете изучать их самостоятельно, если у вас есть особые обстоятельства.
Как писать сущности
Помните один принцип: количество полей в классе объекта> = количество полей, которые необходимо работать в таблице базы данных. По умолчанию все поля в классе объектов управляются как поля в таблице, и если есть дополнительные поля, должна быть добавлена аннотация @Transient .
@Table (name = "test_table") public class testtablevoimpless serializable {private static final long serialversionuid = 1l; @Id @generatedvalue (generator = "jdbc") частный длинный идентификатор; @Transient частная строка userId; Приватное название строки; Частная временная метка частная строка createUserid; частная временная метка обновления; Private String UpdateUserid; частное целое число Isdelete; // Опустить, получить, установить ...}иллюстрировать:
Как написать дао
В традиционном написании Mybatis интерфейс DAO должен быть связан с файлом Mapper, то есть SQL должен быть написан для реализации методов в интерфейсе DAO. В целом Mapper, DAO должен только наследовать общий интерфейс, чтобы иметь богатые методы:
Унаследование общего картера, дженерики должны быть указаны
Public Interface TestTableDAoextends Mapper <TestTableVo> {}После того, как вы унаследоваете Mapper, унаследованный Mapper имеет все общие методы Mapper:
Выбирать
Метод: список <t> select (t recore);
Примечание. Запрос на основе значения атрибута в сущности и используйте равные знаки для условий запроса
Метод: t SelectByPrimaryKey (ключ объекта);
Примечание. Запрос на основе поля первичного ключа. Параметры метода должны содержать полные атрибуты первичного ключа. Условия запроса используют равные знаки.
Метод: список <t> selectall ();
Примечание. Запрос всех результатов, метод Select (NULL) может достичь того же эффекта
Метод: T SELECTONE (T Record);
ПРИМЕЧАНИЕ. Запрос в соответствии с свойствами в сущности, может быть только одно возвратное значение, и несколько результатов выбрасываются. Условия запроса используют равные знаки.
Метод: int selectCount (t recore);
Примечание. Запросите общее количество атрибутов в сущности и используйте равный знак для условий запроса.
Вставлять
Метод: int insert (t recore);
Примечание. Сохраните объект, атрибут NULL также будет сохранен, а значение по умолчанию базы данных не будет использоваться.
Метод: int insertselective (t record);
ПРИМЕЧАНИЕ. Сохраните объект, атрибут NULL не будет сохранен, а значение по умолчанию базы данных будет использоваться.
Обновлять
Метод: int updatebyprimarykey (t record);
Примечание. Обновите все поля объекта в соответствии с первичным ключом, нулевое значение будет обновлено
Метод: int updatebyprimarykeyseelective (t record);
Описание: Обновите значение, атрибут которого не является нулевым в соответствии с первичным ключом
Удалить
Метод: int delete (t recore);
Примечание. Удалить в соответствии с атрибутами сущности в качестве условий, используйте равные знаки для условий запроса
Метод: int deleteByprimarykey (объект ключа);
Примечание. Удалить в соответствии с поле первичного ключа, параметры метода должны содержать полные атрибуты первичных ключей
Пример метод
Метод: список <T> selectByExample (Пример объекта);
Описание: запрос в соответствии с примерами условий
Ключевой момент: этот запрос поддерживает указание столбцов запроса через пример класса и определение столбцов запроса через метод SelectProperties.
Метод: int selectCountByExample (пример объекта);
Описание: Запрос общего числа в соответствии с примерами условий
Метод: int updateByexample (@param ("record") t rocquare, @param ("Пример") Пример объекта);
ПРИМЕЧАНИЕ. Обновите все свойства, содержащиеся в записи объекта в соответствии с примерами условий, и нулевое значение будет обновлено.
Метод: int updateByExampleSelective (@param ("record") t rocquare, @param ("Пример") Пример объекта);
Описание: Обновление записи объекта в соответствии с примером условий содержит значение свойства, которое не является нулевым
Метод: int deleteByexample (пример объекта);
Описание: Удалить данные в соответствии с примерами условий
Используется в коде
Включите DAO в обслуживание, и он готов к использованию.
@Autowiredprivate testtabledao testtabledao;
Ниже приведен общий способ написания:
Новый
Testtablevo vo = new TestTableVo (); // Опустите свойства настройки для vo ... int row = testtabledao.insertelective (vo);
Исправлять
Testtablevo vo = new TestTablevo (); // Опустите свойства настройки для vo ... int row = testtabledao.updatebyprimarykeyseelective (vo);
Запросить сингл
Testtablevo vo = new TestTableVo (); Vo.SetId (123L); testTableVo result = testTableDAO.Selectone (vo);
Условный запрос
// Создать пример примера примера = новый пример (testtablevo.class); // Создать критериаэксуск.
Суммировать
Принцип общего Mapper - получить информацию о классах объектов посредством отражения и построить соответствующий SQL. Поэтому нам нужно только поддерживать классы сущности, что обеспечивает большое удобство для справки со сложными и изменчивыми потребностями. Приведенное выше описание - это просто простое использование генерального картера. В реальных проектах мы все равно должны инкапсулировать более крупный, более общий и более используемый метод, основанный на общем карте на основе бизнеса.
С конфигурацией пружинной загрузки
Мавен
<!-mybatis-> <dependency> <groupid> org.mybatis.spring.boot </groupid> <artifactid> mybatis-spring-boot-starter </artifactid> <serview> 1.3.1 </version> </depervice> <!-Mapper-> <DepectId> <groupD> tk.mybatis> <! <strifactid> mapper-spring-boot-starter </artifactid> <sersion> 1.1.4 </version> </depertion>
Приложение. Прозрачные конфигурации
#Mapper#Mappers Comma отделил mappper.mappers = tk.mybatis.mapper.common.mappermapper.not-empty = falsemapper.identity = mysql
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.