写到最前面
随着越来越多的项目使用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