转载自http://nihao-shijie.lofter.com/post/1cd58fc5_ceadf90
Mybatis-Plus 是 Mybatis 最得力的助手,只做增强不做改变,为简化开发、提高效率而生。
先介绍一下Mybatis-Plus
优点
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一样使用,没有任何冲突。