小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
最近在工作中,接触到了一个MyBatis扩展工具包MyBatis-Ext,可以说很大程度上减轻了使用mybatis时的工作量,本文就和大家来分享一下这个轻量的扩展工具。
MyBatis-Ext是MyBatis的增强扩展,和我们平常用的Mybatis-plus非常类似,简化了MyBatis对单表增删改查的操作,提供通用的增删改查,支持函数式编程,支持分页查询,支持用户自定义通用方法,并且能够防止SQL注入。集成起来也非常简单,对MyBatis只做增强不做修改。
以spring-boot项目为例,集成非常简单。pom导入核心依赖:
1 | xml复制代码<dependency> |
需要注意的是,引入mybatis-ext-spring-boot-starter
后无需再引入mybatis-spring-boot-starter
。
和以往一样,在application.yml
配置一下数据源:
1 | yml复制代码spring: |
创建一个映射的实体类:
1 | java复制代码@Data |
mybatis-ext使用了Jpa
的注解,目前实现了@Table
、@Id
、@Column
、@Transient
、@Version
。其中@Table
、@Id
是必须添加的注解,其他非必须添加。使用@Table
指定数据表名,@Id
指定数据表主键。
查询的Mapper接口继承BaseMapper
接口,泛型中填写实体类:
1 | java复制代码public interface UserMapper extends BaseMapper<User> { |
我们来看一下能够直接调用的方法,为在BaseMapper
中内置了很多通用方法,可以直接调用,非常简便:
1 | java复制代码int deleteByPrimaryKey(PK id); |
来进行一下接口调用的测试,先试一下selectAll
方法:
1 | java复制代码@GetMapping("getUser") |
测试结果:
这样,通过调用内置方法就实现了不写sql语句直接进行查询。同样,如果想根据主键进行查询也很简单,直接调用selectByPrimaryKey
方法:
1 | java复制代码@PostMapping("getUserById") |
查询结果:
另外,还可以使用Optional
包裹查询,修改一下上面主键查询的方法:
1 | java复制代码@PostMapping("getUserById") |
这样,在传入一个不存在的主键时,就会直接抛出自定义的异常:
还有其他很多简单的查询,大家可以根据上面列出api自行测试一下。此外,还可以使用Criteria
,使用逻辑组合,进行函数式查询:
1 | java复制代码@GetMapping("criteriaTest") |
查询结果:
也可以使用Example
进行查询:
1 | java复制代码@GetMapping("exampleTest") |
结果与使用Criteria
结果相同。另外,还可以将多个条件组合使用:
1 | java复制代码GetMapping("testExampleWithSub") |
结果:
除了上面介绍的这些功能与基础的sql增删改查外,MyBatis-Ext还实现了很多其他功能,例如排序和分页,并且支持自定义通用接口方法等等,大家可以在使用中通过实践继续探索一下。
最后
如果觉得对您有所帮助,小伙伴们可以点赞、转发一下,非常感谢
公众号
码农参上
,加个好友,做个点赞之交啊
本文转载自: 掘金