На основе mybatis был разработан плагин jpa-batis, который позволяет проектам, использующим JPA, легко и удобно обрабатывать сложные SQL-запросы, подобно использованию mybatis. Основное назначение — обработка сложных запросов, поэтому поддержка операций insert, update и delete была исключена, оставшись только поддержка операции select.
Так как плагин основан на mybatis, то синтаксис в файле mapper.xml полностью соответствует mybatis, а взаимодействие с базой данных реализовано с использованием класса EntityManager из JPA.
Если вам полезен этот плагин, пожалуйста, оставьте звездочку, а также вы можете форкнуть проект и доработать его. Если вы считаете, что этот плагин бесполезен, не забрасывайте его негативными комментариями, спасибо.
Описание архитектуры программного обеспечения Основано на:
Текущая версия основана на версии springboot 1.5.10.RELEASE, если вы хотите использовать более позднюю версию springboot, просто измените версию родительского проекта.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
</parent>
Добавьте в ваш проект jpa-batis.jar
<dependency>
<groupId>com.yinsin</groupId>
<artifactId>jpabatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
batis:
mapper: mappers # Предположим, что mapper.xml находится в директории src/main/resources/mappers/
или
batis.mapper=mappers # Предположим, что mapper.xml находится в директории src/main/resources/mappers/
<?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">
выбрать
ui.row_id, ui.account, ui.name, ui.mobile,
ui.email, ui.headimage, ui.status,
ugi.game_integral, ugi.game_level
из
cll_user_info ui
левое соединение cll_user_game_info ugi
по ui.row_id = ugi.user_id
где ugi.game_no = #{gameNo,jdbcType=VARCHAR}
упорядочить по ugi.game_integral убыванию,
ugi.game_level убыванию,
ui.lastlogindate убыванию
</select>
</mapper>
@JpaMapper
private JpaSession session;
```### 4. Выполнение запроса:
#### 4.1 Запрос одной записи
```java
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 Запрос нескольких записей
```java
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 ...
// Запрос с пагинацией и без пагинации отличаются только параметром 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 )