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

OSCHINA-MIRROR/yisin-jpabatis

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

jpabatis

Введение

На основе MyBatis был создан плагин JPA-Batis, который позволяет проектам, использующим JPA, легко выполнять сложные SQL-запросы так же, как это делается с помощью MyBatis.

Основной целью является поддержка сложных запросов, поэтому поддержка операций insert, update и delete была отключена, а поддерживается только select.

Поскольку плагин основан на MyBatis, синтаксис в файлах mapper.xml полностью совпадает с MyBatis, а взаимодействие с базой данных реализуется через EntityManager из JPA.

Если вам кажется этот плагин полезным, пожалуйста, оставьте звездочку, вы также можете fork проект и доработать его. Если вы считаете, что он бесполезен, не забрасывайте меня камнями, спасибо.

Архитектура программного обеспечения

Описание архитектуры программного обеспечения:

  1. mybatis-3
  2. Spring Data JPA

Инструкция по установке

Текущая версия основана на Spring Boot 1.5.10.RELEASE. Если вы хотите использовать более новую версию Spring Boot, просто измените версию родителя.

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.5.10.RELEASE</version>
</parent>

Добавьте в ваш проект jar-файл JPA-Batis.

<dependency>
    <groupId>com.yinsin</groupId>
    <artifactId>jpabatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

Инструкция по использованию

1. Добавление конфигурации пути к файлам mapper.xml в springboot-конфигурационном файле

batis:
    mapper: mappers # Предположим, что mapper.xml находится в директории src/main/resources/mappers/

или

batis.mapper=mappers # Предположим, что mapper.xml находится в директории src/main/resources/mappers/

2. Создание файла mapper.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yinsin.lifechess.domain.game.CllUserGameInfo">
    <resultMap id="BaseResultMap" type="java.util.Map">
        <result column="row_id" jdbcType="BIGINT" property="rowId" />
        <result column="account" jdbcType="VARCHAR" property="account" />
        <result column="name" jdbcType="VARCHAR" property="name" />
        <result column="mobile" jdbcType="VARCHAR" property="mobile" />
        <result column="email" jdbcType="VARCHAR" property="email" />
        <result column="headimage" jdbcType="VARCHAR" property="headimage" />
        <result column="status" jdbcType="INTEGER" property="status" />
        <result column="game_integral" jdbcType="INTEGER" property="gameIntegral" />
        <result column="game_level" jdbcType="INTEGER" property="gameLevel" />
    </resultMap>

    <select id="loadCChessRankingList" parameterType="String" resultMap="BaseResultMap">
    	select 
		  ui.row_id, ui.account, ui.name, ui.mobile,
		  ui.email, ui.headimage, ui.status,
		  ugi.game_integral, ugi.game_level
		from
		  cll_user_info ui 
		  left join cll_user_game_info ugi 
		    on ui.row_id = ugi.user_id 
		where ugi.game_no = #{gameNo,jdbcType=VARCHAR}
		order by ugi.game_integral desc,
		  ugi.game_level desc,
		  ui.lastlogindate desc
    </select>
</mapper>

3. В классах, где требуется использование JPA-Batis, внедрите класс JpaSession:

@JpaMapper
private JpaSession session;

4. Выполнение вызова:

4.1 Получение одной записи

Map<String, Object> param = new HashMap<>();
param.put("gameNo", "xx");
// mapperid -> пространство имён маппера + id тэга <select>
// Например: com.yinsin.lifechess.domain.game.CllUserGameInfo.loadCChessRankingList
Map<String, Object> result = session.selectOne("mapperid", param);
// TODO ...

4.2 Получение нескольких записей

Map<String, Object> param = new HashMap<>();
param.put("gameNo", "xx");
// mapperid -> пространство имён маппера + id тэга <select>
// Например: com.yinsin.lifechess.domain.game.CllUserGameInfo.loadCChessRankingList
List<Map<String, Object>> dataList = session.selectList("mapperid", param);
// TODO ...

4.3 Получение нескольких записей с пагинацией

// Различие между пагинационным и непагинационным запросами заключается в параметре Pageable
Map<String, Object> param = new HashMap<>();
param.put("gameNo", "xx");
Pageable pageable = new PageRequest(0, 10); // Для версий 1.x
//Pageable pageable = Pageable.of(0, 10); // Для версий 2.x
// mapperid -> пространство имён маппера + id тэга <select>
// Например: com.yinsin.lifechess.domain.game.CllUserGameInfo.loadCChessRankingList
Page<Map<String, Object>> dataList = session.selectList("mapperid", param, pageable);
// TODO ...

Комментарии ( 0 )

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

Введение

На основе mybatis была создана оболочка плагина jpa-batis. Это позволяет проектам, использующим jpa, удобно и легко работать со сложными операторами SQL, как если бы они использовали mybatis. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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