1. 程式人生 > >mybatis-jpa外掛使用教程

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