SpringBoot整合MyBatis-plus
2018-12-18 20:30
585 查看
第一步:添加必要的依赖
第一种是在已存在MyBatis的情况下,直接添加mybatis-plus包即可。
[code]<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.1.8</version> </dependency>
第二种是直接添加mybatis-plus的starter,它会自动导入mybatis的依赖包及其他相关依赖包
[code]<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.1</version> </dependency>
第二步:添加必要的配置
注意:Mybatis-plus是MyBatis的再封装,添加MyBatis-plus之后我们的设置针对的应该是MyBatis-plus,而不是MyBatis。
[code]mybatis-plus: mapper-locations: classpath*:/mapper/*.xml type-aliases-package: com.example.springbootdemo.entity type-aliases-super-type: java.lang.Object type-handlers-package: com.example.springbootdemo.typeHandler type-enums-package: com.example.springbootdemo.enums
第三步:添加必要的配置类
[code]@EnableTransactionManagement @Configuration @MapperScan("com.example.springbootdemo.plusmapper") public class MyBatisPlusConfig { // mybatis-plus分页插件 @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
第四步:定义实体
[code]@Data @Builder @ToString @EqualsAndHashCode @NoArgsConstructor @AllArgsConstructor @TableName(value = "ANIMAL") public class Animal { @TableId(value = "ID",type = IdType.AUTO) private Integer id; @TableField(value = "NAME",exist = true) private String name; @TableField(value = "TYPE",exist = true) private AnimalType type; @TableField(value = "SEX",exist = true) private AnimalSex sex; @TableField(value = "MASTER",exist = true) private String master; }
[code]public enum AnimalType implements IEnum { CAT("1","猫"),DOG("2","狗"),TIGER("3","虎"),MOUSE("4","鼠"),MONKEY("5","猴"),LOAN("6","狮"),OTHER("7","其他"); private final String value; private final String desc; AnimalType(final String value,final String desc){ this.value=value; this.desc = desc; } @Override public Serializable getValue() { return value; } public String getDesc() { return desc; } }
[code]public enum AnimalSex implements IEnum { MALE("1","公"),FEMALE("2","母"); private final String value; private final String desc; AnimalSex(final String value,final String desc){ this.value = value; this.desc = desc; } @Override public Serializable getValue() { return value; } public String getDesc() { return desc; } }
第五步:定义mapper接口
[code]public interface AnimalRepository extends BaseMapper<Animal> { }
解说:使用MyBatis Plus后Mapper只要继承BaseMapper接口即可,即使不添加XML映射文件也可以实现该接口提供的增删改查功能,还可以配合Wrapper进行条件操作,当然这些操作都仅仅限于单表操作,一旦涉及多表联查,那么还是乖乖添加**Mapper.xml来自定义SQL吧!!!
第六步:定义service(重点)
[code]@Service @Log4j2 public class AnimalService { @Autowired private AnimalRepository animalRepository; //增 public ResponseEntity<Animal> addAnimal(final Animal animal) { animalRepository.insert(animal); return ResponseEntity.ok(animal); } //删 public ResponseEntity<Integer> deleteAnimalById(final int id){ return ResponseEntity.ok(animalRepository.deleteById(id)); } public ResponseEntity<Integer> deleteAnimals(final Animal animal){ return ResponseEntity.ok(animalRepository.delete(packWrapper(animal, WrapperType.QUERY))); } public ResponseEntity<Integer> deleteAnimalsByIds(List<Integer> ids){ return ResponseEntity.ok(animalRepository.deleteBatchIds(ids)); } public ResponseEntity<Integer> deleteAnimalsByMap(final Animal animal){ Map<String, Object> params = new HashMap<>(); if(Objects.nonNull(animal.getId())){ params.put("ID",animal.getId()); } if(StringUtils.isNotEmpty(animal.getName())){ params.put("NAME", animal.getName()); } if(Objects.nonNull(animal.getType())){ params.put("TYPE", animal.getType()); } if(Objects.nonNull(animal.getSex())){ params.put("SEX", animal.getSex()); } if (StringUtils.isNotEmpty(animal.getMaster())){ params.put("MASTER", animal.getMaster()); } return ResponseEntity.ok(animalRepository.deleteByMap(params)); } //改 public ResponseEntity<Integer> updateAnimals(final Animal animal, final Animal condition){ return ResponseEntity.ok(animalRepository.update(animal, packWrapper(condition, WrapperType.UPDATE))); } public ResponseEntity<Integer> updateAnimal(final Animal animal){ Wrapper<Animal> animalWrapper = new UpdateWrapper<>(); ((UpdateWrapper<Animal>) animalWrapper).eq("id",animal.getId()); return ResponseEntity.ok(animalRepository.update(animal, animalWrapper)); } //查 public ResponseEntity<Animal> getAnimalById(final int id){ return ResponseEntity.ok(animalRepository.selectById(id)); } public ResponseEntity<Animal> getOneAnimal(final Animal animal){ return ResponseEntity.ok(animalRepository.selectOne(packWrapper(animal, WrapperType.QUERY))); } public ResponseEntity<List<Animal>> getAnimals(final Animal animal){ return ResponseEntity.ok(animalRepository.selectList(packWrapper(animal, WrapperType.QUERY))); } public ResponseEntity<List<Animal>> getAnimalsByIds(List<Integer> ids){ return ResponseEntity.ok(animalRepository.selectBatchIds(ids)); } public ResponseEntity<List<Animal>> getAnimalsByMap(final Animal animal){ Map<String, Object> params = new HashMap<>(); if(Objects.nonNull(animal.getId())){ params.put("ID",animal.getId()); } if(StringUtils.isNotEmpty(animal.getName())){ params.put("NAME", animal.getName()); } if(Objects.nonNull(animal.getType())){ params.put("TYPE", animal.getType()); } if(Objects.nonNull(animal.getSex())){ params.put("SEX", animal.getSex()); } if (StringUtils.isNotEmpty(animal.getMaster())){ params.put("MASTER", animal.getMaster()); } return ResponseEntity.ok(animalRepository.selectByMap(params)); } public ResponseEntity<List<Map<String, Object>>> getAnimalMaps(final Animal animal){ return ResponseEntity.ok(animalRepository.selectMaps(packWrapper(animal, WrapperType.QUERY))); } //查个数 public ResponseEntity<Integer> getCount(final Animal animal){ return ResponseEntity.ok(animalRepository.selectCount(packWrapper(animal, WrapperType.QUERY))); } //分页查询 public ResponseEntity<Page<Animal>> getAnimalPage(final Animal animal,final int pageId,final int pageSize){ Page<Animal> page = new Page<>(); page.setCurrent(pageId); page.setSize(pageSize); return ResponseEntity.ok((Page<Animal>) animalRepository.selectPage(page,packWrapper(animal, WrapperType.QUERY))); } private Wrapper<Animal> packWrapper(final Animal animal, WrapperType wrapperType){ switch (wrapperType){ case QUERY: QueryWrapper<Animal> wrapper = new QueryWrapper<>(); if (Objects.nonNull(animal.getId())) wrapper.eq("ID", animal.getId()); if (StringUtils.isNotEmpty(animal.getName())) wrapper.eq("name", animal.getName()); if (Objects.nonNull(animal.getType())) wrapper.eq("type", animal.getType()); if (Objects.nonNull(animal.getSex())) wrapper.eq("sex", animal.getSex()); if (StringUtils.isNotEmpty(animal.getMaster())) wrapper.eq("master", animal.getMaster()); return wrapper; case UPDATE: UpdateWrapper<Animal> wrapper2 = new UpdateWrapper<>(); if (Objects.nonNull(animal.getId())) wrapper2.eq("ID", animal.getId()); if (StringUtils.isNotEmpty(animal.getName())) wrapper2.eq("name", animal.getName()); if (Objects.nonNull(animal.getType())) wrapper2.eq("type", animal.getType()); if (Objects.nonNull(animal.getSex())) wrapper2.eq("sex", animal.getSex()); if (StringUtils.isNotEmpty(animal.getMaster())) wrapper2.eq("master", animal.getMaster()); return wrapper2; case QUERYLAMBDA: LambdaQueryWrapper<Animal> wrapper3 = new QueryWrapper<Animal>().lambda(); if (Objects.nonNull(animal.getId())) wrapper3.eq(Animal::getId, animal.getId()); if (StringUtils.isNotEmpty(animal.getName())) wrapper3.eq(Animal::getName, animal.getName()); if (Objects.nonNull(animal.getType())) wrapper3.eq(Animal::getType, animal.getType()); if (Objects.nonNull(animal.getSex())) wrapper3.eq(Animal::getSex, animal.getSex()); if (StringUtils.isNotEmpty(animal.getMaster())) wrapper3.eq(Animal::getMaster, animal.getMaster()); return wrapper3; case UPDATELAMBDA: LambdaUpdateWrapper<Animal> wrapper4 = new UpdateWrapper<Animal>().lambda(); if (Objects.nonNull(animal.getId())) wrapper4.eq(Animal::getId, animal.getId()); if (StringUtils.isNotEmpty(animal.getName())) wrapper4.eq(Animal::getName, animal.getName()); if (Objects.nonNull(animal.getType())) wrapper4.eq(Animal::getType, animal.getType()); if (Objects.nonNull(animal.getSex())) wrapper4.eq(Animal::getSex, animal.getSex()); if (StringUtils.isNotEmpty(animal.getMaster())) wrapper4.eq(Animal::getMaster, animal.getMaster()); return wrapper4; default:return null; } } } enum WrapperType{ UPDATE,UPDATELAMBDA,QUERY,QUERYLAMBDA; }
相关文章推荐
- SpringBoot系列2—整合Mybatis-plus
- SpringBoot + Mybatis plus 实现多数据源整合
- spring boot 整合mybatis-plus ssm框架
- 基于SpringBoot的Mybatis-Plus插件整合
- spring boot整合mybatis+mybatis-plus
- SpringBoot(十五):SpringBoot整合Mybatis-Plus
- 【springboot】 springboot 整合mybatis-plus
- SpringBoot整合MybatisPlus
- Spring Boot整合Mybatis-Plus和PageHelper分页插件,附项目源码
- SpringBoot学习-(二十)SpringBoot整合Mybatis-plus
- spring boot整合mybatis+mybatis-plus
- Spring Boot + Mybatis Plus 整合——双剑合璧
- [小技巧]关于spring boot 整合mybatis-plus: value为null时不返回的问题。
- SpringBoot+SpringMVC+MybatisPlus框架整合
- Spring Cloud Spring Boot mybatis分布式微服务云架构(二十五)整合MyBatis
- JeeFast是一款基于SpringBoot+Mybatis-Plus+Bootstrap+Vue搭建的JAVA WEB快速开发平台
- SpringBoot整合MyBatis(转)
- SpringBoot整合Mybatis多数据源
- 自己现实mybatis分页插件 整合springboot 运行
- spring整合系列学习笔记——springBoot整合mybatis