前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis助手之Mybatis-Plus——开始使用

Mybatis助手之Mybatis-Plus——开始使用

作者头像
allsmallpig
发布2021-02-25 11:36:24
5050
发布2021-02-25 11:36:24
举报
文章被收录于专栏:allsmallpi博客

转载自http://nihao-shijie.lofter.com/post/1cd58fc5_ceadf90

Mybatis-Plus 是 Mybatis 最得力的助手,只做增强不做改变,为简化开发、提高效率而生。

先介绍一下Mybatis-Plus

优点

  • 纯正血统:完全继承原生 Mybatis 的所有特性
  • 最少依赖:仅仅依赖Mybatis以及Mybatis-Spring
  • 性能损耗小:启动即会自动注入基本CURD ,性能无损耗,直接面向对象操作
  • 自动热加载:Mapper对应的xml可以热加载,大大减少重启Web服务器时间,提升开发效率
  • 自动生成代码:包含自动生成代码类以及Maven插件,通过少量配置,即可快速生成Mybatis对应的xml、mapper、entity、service、serviceimpl层代码,减少开发时间
  • 自定义操作:支持自定义Sql注入,实现个性化操作
  • 自定义转义规则:支持数据库关键词(例如:order、key等)自动转义,支持自定义关键词
  • 多种主键策略:支持多达4种主键策略,可自由配置,若无将会自动填充,更有充满黑科技的分布式全局唯一ID生成器
  • 无缝分页插件:基于Mybatis物理分页,无需关心具体操作,等同于编写基本selectList查询
  • 性能分析:自带Sql性能分析插件,开发测试时,能有效解决慢查询
  • 全局拦截:提供全表delete、update操作智能分析阻断
  • 避免Sql注入:内置Sql注入内容剥离器,预防Sql注入攻击

MP自带了代码生成器,包含代码生成类和Maven插件,你可以灵活的调整生成代码的方式。

进行开发你需要做什么呢?你仅仅需要配置好数据库和代码生成路径,然后生成代码就可以开撸Controller层代码了,MP已经把 Entity层、Mapper层、Service层的代码以及Mapper对应的XML文件生成好了!

我们来看看生成后的代码是什么样子:

示例中,我们假设有一张表叫foo,里面包含id和name两个字段,通过MP来生成代码

Foo.java /**  *  * Foo表  *  */ @TableName("foo") public class Foo implements Serializable {     @TableField(exist = false)     protected static final long serialVersionUID = 1L;     /** ID */     @TableId     protected Long id;     /** 名称 */     protected String name;     public Long getId() {         return this.id;     }     public void setId(Long id) {         this.id = id;     }     public String getName() {         return this.name;     }     public void setName(String name) {         this.name = name;     } } FooMapper.java /**  *  * Foo 表数据库控制层接口  *  */ public interface FooMapper extends AutoMapper { } FooMapper.xml          id, name FooService.java /**  *  * Foo 表数据服务层接口  *  */ public interface IFooService extends ISuperService { } FooServiceImpl.java /**  *  * Foo 表数据服务层接口实现类  *  */ @Service public class FooServiceImpl extends SuperServiceImpl implements IFooService { }

纳尼?!!怎么可以这么简洁?!!xml怎么什么东西都没有?!!

对,你没有看错,这就是MP生成代码,非常的简洁而且还生成了对应的注释(备注:实体类字段的注释需要在数据库设计的时候就填写好备注),要是你喜欢,甚至可以配置为无xml(如果不进行扩展,只需要基本CRUD的话)。

AutoMapper方法说明

你可以看到MP采用了继承的方式来提取CRUD方法,那么我们到底有哪些方法呢?

insert相关 boolean insert(T entity); //插入 boolean insertSelective(T entity); //选择性插入,null字段不插入 boolean insertBatch(List entityList); //批量插入 delete相关 boolean deleteById(I id); //通过ID删除 boolean deleteByMap(Map columnMap); // 通过自定义MAP删除 boolean deleteSelective(T entity); //通过entity实体选择性删除,null字段不作为条件 boolean deleteBatchIds(List idList); //批量删除 update相关 boolean updateById(T entity); //通过ID更新 boolean updateSelectiveById(T entity); //通过ID选择性更新,null字段不更新 boolean update(T entity, T whereEntity); //通过whereEntity实体构造where条件进行更新 boolean updateSelective(T entity, T whereEntity); //通过whereEntity实体构造where条件进行选择性更新 boolean updateBatchById(List entityList); //批量更新 select相关 T selectById(I id); //通过ID查询 List selectBatchIds(List idList); //通过ID集合批量查询 List selectByMap(Map columnMap); //通过自定义MAP查询 T selectOne(T entity); //通过实体entity查询 int selectCount(T entity); //统计查询 List selectList(EntityWrapper entityWrapper); //List查询,entityWrapper为查询条件构造器 Page selectPage(Page page, EntityWrapper entityWrapper); //分页查询,page为分页实体,entityWrapper为查询条件构造器

只要生成了代码,就已经带有上述的所有方法,单表的CRUD已经完全能够满足了。

你也许会问,那多表或者复杂业务怎么办?之前说了,MP是一个增强辅助工具,不会改变Mybatis,如果有多表业务和复杂业务,就可以像正常Mybatis一样使用,没有任何冲突。

了解更多

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/06/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档