Mybatis-Plus学习.,简化你的开发,提升开发效率.


-
-


-
-

Mybatis-Plus学习以及实践 简介

即对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); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfwfw.html