1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jianggujin-JMapper

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Часть 1. Введение

JMapper — это расширение, основанное на mybatis-通用-Mapper, которое позволяет использовать JMapper при работе с Mybatis аналогично тому, как это делается с JPA через методы.

Часть 2. Начало использования

Использовать 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.

2.1 Интеграция JMapper

Если вы уже знакомы с использованием универсального Mapper, то интеграция с JMapper будет простой задачей. Нужно просто заменить MapperHelper на JMethodExecutorMapperHelper.

2.1.1 Использование Java-кодирования для интеграции

При использовании Java-кодирования у вас обычно есть код для создания SqlSessionFactory. Существует два способа настройки универсального Mapper перед созданием или после создания объекта SqlSessionFactory, но поскольку нет класса для разбора файла mybatis-config.xml, рекомендуется использовать второй способ.

2.1.1.1 Создание после

// Из только что созданного sqlSessionFactory получаем session
session = sqlSessionFactory.openSession();
// Создаём JMethodExecutorMapperHelper
JMethodExecutorMapperHelper mapperHelper = new JMethodExecutorMapperHelper();
mapperHelper.processConfiguration(session.getConfiguration());

2.1.1.2 Создание до

Создание до происходит путём замены org.apache.ibatis.session.Configuration на tk.mybatis.mapper.session.Configuration для реализации. Код конфигурации выглядит следующим образом:

Configuration configuration = new Configuration();
// Здесь можно обратиться к предыдущему способу настройки MapperHelper
configuration.setMapperHelper(new JMethodExecutorMapperHelper());
sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

2.1.2 Интеграция с Spring

Интеграция с Spring делится на XML и аннотации. Каждый метод имеет разные способы настройки.

2.1.2.1 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>
2.1.2.2 Аннотация @MapperScan

Если вам нужно использовать эту аннотацию для настройки, убедитесь, что вы выбрали 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.

  • () — обязательный параметр;
  • [] — необязательный параметр;
  • Distinct — наличие этого ключевого слова добавит DISTINCT к запросу;
  • Exclude — наличие этого ключевого слова означает, что следующие атрибуты являются исключаемыми;
  • selectProperties — это выражение указывает на то, какие атрибуты необходимо запросить. Если этот раздел отсутствует, по умолчанию запрашиваются все атрибуты. Атрибуты начинаются с заглавной буквы, и атрибуты разделяются And;
  • whereProperties — это выражение представляет собой условие where, которое необходимо использовать. Условия в разных сегментах соединяются с помощью Or или And. Приоритет Or выше, чем у And. Формат условия сегмента: атрибут [ключевое слово]. Атрибут начинается с заглавной буквы. Следует отметить, что количество параметров формы метода должно соответствовать количеству сегментов после разделения условий;
  • orderProperties — это выражение представляет атрибут, который необходимо использовать в Order by. Атрибуты разделяются Asc или Desc. Если этот раздел не существует, используется стандартная сортировка общего 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 )

Вы можете оставить комментарий после Вход в систему

Введение

mybatis универсальный Mapper усиление обработки. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/jianggujin-JMapper.git
git@api.gitlife.ru:oschina-mirror/jianggujin-JMapper.git
oschina-mirror
jianggujin-JMapper
jianggujin-JMapper
master