mybatis-jpa外掛使用教程
寫到最前面
隨著越來越多的專案使用myabtis,國內也有幾個mybatis 的外掛,比如 myabtis plus,今天給大家介紹的myabtis jpa是一個對myabtis 無汙染,輕量級的外掛。
本外掛暫時只支援mysql
1 mybatis jpa外掛可以做什麼?
A 遵循JPA規範,可以不用寫sql實現簡單的CRUD方法。
B 支援分頁,排序,批量insert
C 支援分表
D 可以配合mapper.xml一起使用
2 Quik start (PS:相關的下載地址都在最下面)
A 首先引入myabtis的jar (或者使用eclipse linksource引入mybatis jpa的程式碼)
B 使用程式碼生成器根據資料庫表生成do (你可能要重寫下程式碼生成器的部分程式碼,預設是我自己框架的格式)
C 讓你的dao介面繼承MybatisBaseMapper
3 MybatisBaseMapper 提供的能力(無需寫程式碼即可實現的,請注意,batchupdate此方法未實現)
package com.mybatis.jpa.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.mybatis.jpa.annotation.StatementDefinition;
/**
* 規範通用Mapper方法簽名</br>
*
* 子類Mapper通過繼承此介面獲取方法簽名,並使用{@MapperDefinition}註解標記Mapper.</br>
* 使用{@StatementDefinition}註解標記的方法,將被解析並注入到Mybatis Statement</br>
*
* about deference with insert(){@link #insert(Object)} and insertSelective()
* {@link #insertSelective(Object)}</br>
* 方法的區別在於null值的處理,假設column_1在資料庫設定了預設值,而引數中的field_1為null值,則insert
* 在資料庫寫入null,而insertSelective寫入資料庫預設值.
*
* @attation 並非要繼承此接口才能使用mybatis-jpa,事實上它只是定義了公共的Mapper方法簽名,便於程式碼風格的統一
*
*
* @author svili
* @data 2017年5月8日
*
* @param <T>持久化Entity型別
*/
public interface MybatisBaseMapper<T> {
/**
* 做判空處理的insert
* @param entity do
* @return 受影響的行數
*/
@StatementDefinition
int insertSelective(T entity);
/**
* 插入
* @param entity
* @return int 受影響的行數
* @since 1.0.0
*/
@StatementDefinition
int insert(T entity);
/**
* 批量插入
* @param list 需要插入的集合
* @return 受影響的行數
* @since 1.0.0
*/
@StatementDefinition
int batchInsert(@Param("list")List<T> list);
/**
* 批量插入.
*
* @param list 需要插入的集合
* @param flag 分表標誌
* @return 受影響的行數
* @since 1.0.0
*/
@StatementDefinition
int batchInsertCatTable(@Param("list")List<T> list,@Param("flag")String flag);
/**
* 根據id刪除資料
* @param primaryValue id
* @return 受影響行數
* @since 1.0.0
*/
@StatementDefinition
int deleteById(Object primaryValue);
/**
* 根據id刪除資料
* @param primaryValue id
* @param flag 分表標誌
* @return 受影響行數
* @since 1.0.0
*/
@StatementDefinition
int deleteByIdCatTable(@Param("param")Object primaryValue,@Param("flag")String flag);
/**
* 根據id更新
* @param entity 待更新資料
* @return 受影響行數
* @since 1.0.0
*/
@StatementDefinition
int updateById(T entity);
/**
* 根據id跟新 -- 判空
* @param 待更新資料
* @return 受影響行數
* @since 1.0.0
*/
@StatementDefinition
int updateSelectiveById(T entity);
//@StatementDefinition
int batchUpdate(List<T> list);
/**
* 根據id、查詢
* @param primaryValue id
* @return model
* @since 1.0.0
*/
@StatementDefinition
T selectById(Object primaryValue);
/**
* 根據id、查詢
* @param primaryValue id
* @return model
* @since 1.0.0
*/
@StatementDefinition
T selectByIdCatTable(@Param("param")Object primaryValue,@Param("flag")String flag);
/**
* 根據分頁引數返回結果
* 如果不需要分頁 pageStart或者pageSize傳0即可
* @param entity 用來做過濾的引數
* @param pageStart 開始number
* @param pageSize 一頁多少行資料
* @return 符合條件的資料
*/
@StatementDefinition
List<T> selectPage(@Param("entity")T entity,@Param("pageStart")long pageStart,@Param("pageSize")long pageSize);
/**
* 根據引數查詢總數
* @param entity 用來做過濾的引數
* @return 符合條件的資料條數
*/
@StatementDefinition
long selectCount(T entity);
/**
* select(這裡用一句話描述這個方法的作用)
* (這裡描述這個方法適用條件 – 可選)
* @return 查詢所有
* @since 1.0.0
*/
@StatementDefinition
List<T> select();
}
4 程式碼生成器使用教程
最後官方的myabtis jpa外掛地址:https://github.com/LittleNewbie/mybatis-jpa (注意,可能有一些 BUG,推薦使用我定製過的)
我定製過的下載地址:http://download.csdn.net/download/shuaizai88/10218432
程式碼生成器地址:http://download.csdn.net/download/shuaizai88/10218434
作者QQ 921888199