JMapper — это расширение, основанное на mybatis-通用-Mapper, которое позволяет использовать JMapper при работе с Mybatis аналогично тому, как это делается с JPA через методы.
Использовать JMapper можно путём прямой загрузки исходного кода и его компиляции или загрузки уже скомпилированного jar-файла. Если вы используете maven для построения проекта, то можете добавить координаты JMapper в pom.xml:
<!-- http://mvnrepository.com/artifact/com.jianggujin/JMapper -->
<dependency>
<groupId>com.jianggujin</groupId>
<artifactId>JMapper</artifactId>
<version>последняя версия</version>
</dependency>
Последнюю версию можно получить из Maven-репозитория или с Code Cloud.
Если вы уже знакомы с использованием универсального Mapper, то интеграция с JMapper будет простой задачей. Нужно просто заменить MapperHelper на JMethodExecutorMapperHelper.
При использовании Java-кодирования у вас обычно есть код для создания SqlSessionFactory. Существует два способа настройки универсального Mapper перед созданием или после создания объекта SqlSessionFactory, но поскольку нет класса для разбора файла mybatis-config.xml, рекомендуется использовать второй способ.
// Из только что созданного sqlSessionFactory получаем session
session = sqlSessionFactory.openSession();
// Создаём JMethodExecutorMapperHelper
JMethodExecutorMapperHelper mapperHelper = new JMethodExecutorMapperHelper();
mapperHelper.processConfiguration(session.getConfiguration());
Создание до происходит путём замены org.apache.ibatis.session.Configuration на tk.mybatis.mapper.session.Configuration для реализации. Код конфигурации выглядит следующим образом:
Configuration configuration = new Configuration();
// Здесь можно обратиться к предыдущему способу настройки MapperHelper
configuration.setMapperHelper(new JMethodExecutorMapperHelper());
sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
Интеграция с Spring делится на XML и аннотации. Каждый метод имеет разные способы настройки.
Использование MapperScannerConfigurer
<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="пакет сканирования"/>
<property name="mapperHelper">
<bean class="com.jianggujin.mybatis.mapper.JMethodExecutorMapperHelper" />
</property>
</bean>
Использование Configuration
Если некоторым сторонним разработчикам также требуется специальный MapperScannerConfigurer, вы не сможете использовать предыдущий метод настройки. В этом случае вы можете выбрать следующий метод, который требует использования MyBatis (3.4.0+) и mybatis-spring (1.3.0+), код конфигурации выглядит следующим образом:
<!-- Использование конфигурации для настройки -->
<bean id="mybatisConfig" class="tk.mybatis.mapper.session.Configuration">
<property name="mapperHelper">
<bean class="com.jianggujin.mybatis.mapper.JMethodExecutorMapperHelper" />
</property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configuration" ref="mybatisConfig"/>
</bean>
<!-- Не нужно об этом думать, обратите внимание, что здесь используется org -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="tk.mybatis.mapper.configuration"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
Если вам нужно использовать эту аннотацию для настройки, убедитесь, что вы выбрали tk.mybatis.spring.annotation.MapperScan (необходимо использовать официальную аннотацию, см. другие способы настройки ниже).
Tk предоставляет эту аннотацию с двумя дополнительными свойствами:
/**
* Конфигурация универсального Mapper, по одной конфигурации на строку
*
* @return
*/
String[] properties() default {};
/**
* Также можно напрямую настроить bean MapperHelper
*
* @return
*/
String mapperHelperRef() default "";
Используйте mapperHelperRef для настройки
@Configuration
@MapperScan(value = "tk.mybatis.mapper.annotation", mapperHelperRef = "mapperHelper")
public static class MyBatisConfigRef {
@Bean
public MapperHelper mapperHelper() {
return new JMethodExecutorMapperHelper();
}
}
Использовать Configuration для настройки
Здесь вы можете использовать аннотацию tk или официальную аннотацию MyBatis.
@Configuration
@MapperScan(value = "tk.mybatis.mapper.annotation")
public static class MyBatisConfigRef {
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
// tk.mybatis.mapper.session.Configuration
Configuration configuration = new Configuration();
// Можно настроить MapperHelper после настройки
``` **2.1.3 SpringBoot интеграция**
Для интеграции с использованием SpringBoot необходимо использовать аннотацию `@MapperScan`. Конкретная конфигурация описана в разделе 2.1.2.2.
**2.2 Правила именования методов**
По умолчанию JMapper не включает анализ методов. Если эта функция необходима, нужно сделать так, чтобы соответствующий Mapper интерфейс реализовывал JMethodExecutorMapper<T>. Тогда JMapper будет обрабатывать пользовательские методы. Кроме того, для того чтобы Mybatis мог нормально распознавать методы интерфейса при сканировании, всё ещё необходимо использовать аннотации Mybatis на методах, которые требуют анализа. В настоящее время JMapper поддерживает аннотации @SelectProvider и @DeleteProvider. Соответствующие типы — это запрос и удаление, а значение атрибута type аннотаций фиксировано: com.jianggujin.mybatis.mapper.JMethodExecutorProvider.class, значение атрибута method фиксировано: dynamicSQL.
```java
public interface CountryMapper extends Mapper<Country>, JMethodExecutorMapper<Country> {
@SelectProvider(type = JMethodExecutorProvider.class, method = "sql")
Country findById(Integer id);
}
В методе запроса необходимо использовать аннотацию @SelectProvider, формат имени метода: [(select|find|read|get|query)[Distinct][Exclude][selectProperties]By][whereProperties][OrderBy(orderProperties)]]. В методе удаления необходимо использовать аннотацию @DeleteProvider, формат имени метода: (delete|remove)By[whereProperties].
JMapper также поддерживает логическую функцию удаления в общем Mapper.
Ключевые слова, которые можно использовать в условиях:
Ключевое слово | Пример | Код |
---|---|---|
IsNotNull, NotNull |
findByIdIsNotNull, findByIdNotNull |
id is not null |
IsNull, Null |
findByIdIsNull, findByIdNull |
id is null |
IsNot, Not, NotEquals |
findByIdIsNot, findByIdNot, findByIdNotEquals |
id <> ?1 |
Is, Equals |
findByIdIs, findByIdEquals |
id = ?1 |
IsGreaterThan, GreaterThan |
findByIdIsGreaterThan, findByIdGreaterThan |
id > ?1 |
IsGreaterThanEqual, GreaterThanEqual |
findByIdIsGreaterThanEqual, findByIdGreaterThanEqual |
id >= ?1 |
IsLessThan, LessThan |
findByIdIsLessThan, findByIdLessThan |
id < ?1 |
IsLessThanEqual, LessThanEqual |
findByIdIsLessThanEqual, findByIdLessThanEqual |
id <= ?1 |
IsBefore, Before |
findByIdIsBefore, findByIdBefore |
id < ?1 |
IsBeforeEqual, BeforeEqual |
findByIdIsBeforeEqual, findByIdBeforeEqual |
id <= ?1 |
IsAfter, After |
findByIdIsAfter, findByIdAfter |
id > ?1 |
IsAfterEqual, AfterEqual |
findByIdIsAfterEqual, findByIdAfterEqual |
id >= ?1 |
IsNotIn, NotIn |
findByIdIsNotIn, findByIdNotIn |
id not in (?1) |
IsIn, In |
findByIdIsIn, findByIdIn |
id in (?1) |
IsBetween, Between |
findByIdIsBetween, findByIdBetween |
id between ?1 and ?2 |
IsNotBetween, NotBetween |
findByIdIsNotBetween, findByIdNotBetween |
id not between ?1 and ?2 |
IsLike, Like |
findByIdIsLike, findByIdLike |
id like ?1 |
IsNotLike, NotLike |
findByIdIsNotLike, findByIdNotLike |
id not like ?1 |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )