mybatis免sql插件之JpaMapper-以Jpa hibernate的风格写mybatis(获取spring容器中mybatis的mapper)

本文介绍了一种以JPA Hibernate风格编写的MyBatis插件——JpaMapper,它能显著减少SQL编写工作,提供类似JPA的CRUD操作。文章详细解释了如何在Spring环境中通过@Autowired注解获取MyBatis的SqlSessionFactory,进而访问到Mapper的Class信息,以及如何定义自定义的JPA风格方法。

mybatis免sql插件之JpaMapper-以Jpa hibernate的风格写mybatis(获取spring容器中mybatis的mapper)

简介

JpaMapper以Jpa hibernate的风格写mybatis的代码,可以减少手动写sql的烦恼。

优势:

  1. 不替换底层实现,仅生成sql并交给mybatis
  2. 方法基本与Jpa hibernate相似,易于框架替换,当然,没那么厉害,不支持联表哦,项目还在继续完善中。
  3. 提供简单分表功能
  4. 逻辑简单,可以拿去自己定制
  5. 提供分页排序功能,最简单的方法实现分页!

gitee地址:https://gitee.com/ffch/JpaMapper

github地址:https://github.com/ffch/jpa-mapper

本篇作为起始篇,先介绍一下如何从spring容器中获取到mybatis的mapper/bean。

获取mapper

spring环境下,可以使用

@Autowired
private List<SqlSessionFactory> sqlSessionFactoryList;

获取到mybatis的SqlSessionFactory,SqlSessionFactory有你想要的一切mybatis配置。

比如mapper的class信息:

for (SqlSessionFactory sqlSessionFactory : sqlSessionFactoryList) {
	Configuration configuration = sqlSessionFactory.getConfiguration();
	MapperRegistry mapperRegistry = configuration.getMapperRegistry();
	List<Class<?>> mappers = new ArrayList<>(mapperRegistry.getMappers());
	
}

这样就拿到了List<Class<?>> mappers。

定义自己的JPA风格的方法

Jpa hibernate最让人喜欢的风格就是(个人认为):

  1. 继承CrudRepository提供了最常用的一些方法。
  2. 使用findBy + 字段即可实现查询。这是所有mybatis的一些mapper工具都不具备的
  3. 名称我喜欢

这里,我们可以让自己定义的mybatis的mapper继承我们自己写的CrudMapper,并定义与CrudRepository相似的方法。当然,mybatis不能有重复的方法名,因为它的MappedStatement是根据方法名唯一的。

其次,我们使用反射功能,读取CrudMapper中的方法,根据我们的需求(这里找到所有没有加注解的方法)找到对应的方法,我们根据mybatis的生成MappedStatement的方法去生成对应的MappedStatement,并交给mybatis管理,这样就可以实现我们想要的Jpa hibernate风格的dao层代码。

下篇介绍下如何生成MappedStatement。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值