博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis-jpa插件使用教程
阅读量:4074 次
发布时间:2019-05-25

本文共 3589 字,大约阅读时间需要 11 分钟。

写到最前面

                  

            随着越来越多的项目使用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方法签名
* * 子类Mapper通过继承此接口获取方法签名,并使用{@MapperDefinition}注解标记Mapper.
* 使用{@StatementDefinition}注解标记的方法,将被解析并注入到Mybatis Statement
* * about deference with insert(){@link #insert(Object)} and insertSelective() * {@link #insertSelective(Object)}
* 方法的区别在于null值的处理,假设column_1在数据库设置了默认值,而参数中的field_1为null值,则insert * 在数据库写入null,而insertSelective写入数据库默认值. * * @attation 并非要继承此接口才能使用mybatis-jpa,事实上它只是定义了公共的Mapper方法签名,便于代码风格的统一 * * * @author svili * @data 2017年5月8日 * * @param
持久化Entity类型 */public interface MybatisBaseMapper
{ /** * 做判空处理的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
list); /** * 批量插入. * * @param list 需要插入的集合 * @param flag 分表标志 * @return 受影响的行数 * @since 1.0.0 */ @StatementDefinition int batchInsertCatTable(@Param("list")List
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
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
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
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

                    

你可能感兴趣的文章
GPS定位
查看>>
地图、显示用户位置、大头针
查看>>
自定义大头针
查看>>
UIButton添加block点击事件
查看>>
利用runtime给类别添加属性
查看>>
本地推送
查看>>
FMDB的使用
查看>>
UIImage存为本地文件与UIImage转换为NSData
查看>>
[转]打印质数的各种算法
查看>>
[转]javascript with延伸的作用域是只读的吗?
查看>>
php的autoload与global
查看>>
IE不支持option的display:none属性
查看>>
[分享]mysql内置用于字符串型ip地址和整数型ip地址转换函数
查看>>
TableDnd(JQuery表格拖拽控件)应用进阶
查看>>
[转]开源中最好的Web开发的资源
查看>>
Docker上部署SpringBoot项目并推送镜像到Docker Hub上---以MacOS为例
查看>>
bibtex I was expecting a `,‘ or a `}‘ 问题解决
查看>>
sql server中各类范式的理解
查看>>
进程同步
查看>>
Python中列表元素删除
查看>>