-
-
-
-
即对Mybatis进行了增强,结合了Hiberante的类型,封装了一些单表的操作,可以对进行单表的操作不需要写一些sql,直接上手开发,加快了开发效率,不过同时也会造成访问数据库的代码混杂的情况,有利有弊.
参考网址官网文档,官方文档.
开发环境Eclipse
java8
SpringBoot + maven
开始开发这里只是配置运行一下简单的Mybatis-plus项目,试验的对象只有一张表,完成对齐的CURD.
初始化一个SpringBoot或者复制SpringBoot项目,初始化的时候可以去springBoot提供的网址进行初始化 Spring Initializr
配置pom.xml <!-- mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.13</version> <scope>runtime</scope> </dependency> Dao/Service/Entity生成Entity,基本的Entity和Mybatis的一致,有个主键的注解可以注意下,影响不大.
Mapper里面不需要添加其他内容,新建一个空的class,然后继承BaseMapper即可
public interface ByReconcileDepartMapper extends BaseMapper<ByReconcileDepart>{}
Service也不需要添加,继承IService
public interface IByReconcileDepartService extends IService<ByReconcileDepart> {}
ServiceImpl也不需要添加,需要继承ServiceImpl,实现IByReconcileDepartService,注解为@Service
public class ByReconcileDepartServiceImpl extends ServiceImpl<ByReconcileDepartMapper, ByReconcileDepart> implements IByReconcileDepartService {}
到这里一个表的对应的实体,service,mapper已经构建完成,还是非常方便的,代码也看起来挺简洁.
基本方法这里只介绍一下常用的几个方法,详细的介绍需要自行去官网查看.
因为Mapper和Service继承的父类中已经默认实现了基础方法,基本包含了单表的CURD,这里直接使用,不需要添加其他代码.
查询类提供了条件构造器QueryWrapper,即条件构造,基本的使用方法为allEq,eq等,使用方式基本为先构造一个条件构造器Wrapper,然后赋给其条件,但条件为key-value,多条件为Map,List.然后将其当做参数传递给指定的查询方法.
多个条件查询
@Test public void listByMap() { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("scenes_name", "大型自助机"); Collection<ByReconcileDepart> listByMap = service.listByMap(map); System.out.println(listByMap); }
得到单个,注意一下第二个参数影响如果查询出来多个会不会报错的问题
@Test public void getOne() { HashMap<String,Object> map = new HashMap<String, Object>(); map.put("scenes_name", "大型自助机"); map.put("platform_mch_id","1540492611"); map.put("seq",null); System.out.println(map); QueryWrapper<ByReconcileDepart> q = new QueryWrapper<ByReconcileDepart>(); // 第二个参数为是否关注map中为null的建, 默认为关注,即会添加seq is null, false 会剔除掉为null的键 q.allEq(map,false); // 第二个参数为查询多个是否会报错, 默认为true 会报错, 可手动指定为false,不会报错并且会返回一个 ByReconcileDepart one = service.getOne(q,false); System.out.println(one); }
Group By
@Test public void listGroupBy() { QueryWrapper<ByReconcileDepart> q = new QueryWrapper<ByReconcileDepart>(); q.eq("scenes_name", "大型自助机"); q.groupBy("platform_mch_id"); List<ByReconcileDepart> list = service.list(q); System.out.println(list); }
Order By
@Test public void listOrderBy() { QueryWrapper<ByReconcileDepart> q = new QueryWrapper<ByReconcileDepart>(); q.eq("scenes_name", "大型自助机"); q.orderByDesc("scenes_name","platform_mch_id"); List<ByReconcileDepart> list = service.list(q); System.out.println(list); }
Or,添加Or条件,默认两个条件是用and连接, 只有手动调用or才会用or,例如下面如果不用条件则是and 调用了则是or
@Test public void listOr() { QueryWrapper<ByReconcileDepart> q = new QueryWrapper<ByReconcileDepart>(); // 这里注意,默认两个条件是用and连接, 只有手动调用or才会用or,例如下面如果不用条件则是and 调用了则是or q.eq("scenes_name", "大型自助机"); q.or(); q.eq("platform_mch_id", "1540492611"); q.orderByDesc("scenes_name","platform_mch_id"); List<ByReconcileDepart> list = service.list(q); System.out.println(list); }