资讯详情

Springboot+mybatis-plus常用方法

mybatis-plus

常用crud方法


文章目录

  • mybatis-plus
  • 一、IService接口代码
  • 二、实体关联
    • 1.实体类表映射关系
    • 重点:
  • 三. CRUD方法(IService)
      • save方法
      • remove
      • update
      • get
      • list
  • 定制条件结构
    • 附表(参数条件对应写法)
  • 总结



提示:以下是本文的文本内容,以下案例可供参考

一、IService接口代码

// // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) //  package com.baomidou.mybatisplus.extension.service;  import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.UpdateChainWrapper;
import com.baomidou.mybatisplus.extension.toolkit.ChainWrappers;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
import org.springframework.transaction.annotation.Transactional;

public interface IService<T> { 
        
    int DEFAULT_BATCH_SIZE = 1000;

    default boolean save(T entity) { 
        
        return SqlHelper.retBool(this.getBaseMapper().insert(entity));
    }

    @Transactional(
        rollbackFor = { 
        Exception.class}
    )
    default boolean saveBatch(Collection<T> entityList) { 
        
        return this.saveBatch(entityList, 1000);
    }

    boolean saveBatch(Collection<T> entityList, int batchSize);

    @Transactional(
        rollbackFor = { 
        Exception.class}
    )
    default boolean saveOrUpdateBatch(Collection<T> entityList) { 
        
        return this.saveOrUpdateBatch(entityList, 1000);
    }

    boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);

    default boolean removeById(Serializable id) { 
        
        return SqlHelper.retBool(this.getBaseMapper().deleteById(id));
    }

    default boolean removeByMap(Map<String, Object> columnMap) { 
        
        Assert.notEmpty(columnMap, "error: columnMap must not be empty", new Object[0]);
        return SqlHelper.retBool(this.getBaseMapper().deleteByMap(columnMap));
    }

    default boolean remove(Wrapper<T> queryWrapper) { 
        
        return SqlHelper.retBool(this.getBaseMapper().delete(queryWrapper));
    }

    default boolean removeByIds(Collection<? extends Serializable> idList) { 
        
        return CollectionUtils.isEmpty(idList) ? false : SqlHelper.retBool(this.getBaseMapper().deleteBatchIds(idList));
    }

    default boolean updateById(T entity) { 
        
        return SqlHelper.retBool(this.getBaseMapper().updateById(entity));
    }

    default boolean update(Wrapper<T> updateWrapper) { 
        
        return this.update((Object)null, updateWrapper);
    }

    default boolean update(T entity, Wrapper<T> updateWrapper) { 
        
        return SqlHelper.retBool(this.getBaseMapper().update(entity, updateWrapper));
    }

    @Transactional(
        rollbackFor = { 
        Exception.class}
    )
    default boolean updateBatchById(Collection<T> entityList) { 
        
        return this.updateBatchById(entityList, 1000);
    }

    boolean updateBatchById(Collection<T> entityList, int batchSize);

    boolean saveOrUpdate(T entity);

    default T getById(Serializable id) { 
        
        return this.getBaseMapper().selectById(id);
    }

    default List<T> listByIds(Collection<? extends Serializable> idList) { 
        
        return this.getBaseMapper().selectBatchIds(idList);
    }

    default List<T> listByMap(Map<String, Object> columnMap) { 
        
        return this.getBaseMapper().selectByMap(columnMap);
    }

    default T getOne(Wrapper<T> queryWrapper) { 
        
        return this.getOne(queryWrapper, true);
    }

    T getOne(Wrapper<T> queryWrapper, boolean throwEx);

    Map<String, Object> getMap(Wrapper<T> queryWrapper);

    <V> V getObj(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);

    default int count() { 
        
        return this.count(Wrappers.emptyWrapper());
    }

    default int count(Wrapper<T> queryWrapper) { 
        
        return SqlHelper.retCount(this.getBaseMapper().selectCount(queryWrapper));
    }

    default List<T> list(Wrapper<T> queryWrapper) { 
        
        return this.getBaseMapper().selectList(queryWrapper);
    }

    default List<T> list() { 
        
        return this.list(Wrappers.emptyWrapper());
    }

    default <E extends IPage<T>> E page(E page, Wrapper<T> queryWrapper) { 
        
        return this.getBaseMapper().selectPage(page, queryWrapper);
    }

    default <E extends IPage<T>> E page(E page) { 
        
        return this.page(page, Wrappers.emptyWrapper());
    }

    default List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper) { 
        
        return this.getBaseMapper().selectMaps(queryWrapper);
    }

    default List<Map<String, Object>> listMaps() { 
        
        return this.listMaps(Wrappers.emptyWrapper());
    }

    default List<Object> listObjs() { 
        
        return this.listObjs(Function.identity());
    }

    default <V> List<V> listObjs(Function<? super Object, V> mapper) { 
        
        return this.listObjs(Wrappers.emptyWrapper(), mapper);
    }

    default List<Object> listObjs(Wrapper<T> queryWrapper) { 
        
        return this.listObjs(queryWrapper, Function.identity());
    }

    default <V> List<V> listObjs(Wrapper<T> queryWrapper, Function<? super Object, V> mapper) { 
        
        return (List)this.getBaseMapper().selectObjs(queryWrapper).stream().filter(Objects::nonNull).map(mapper).collect(Collectors.toList());
    }

    default <E extends IPage<Map<String, Object>>> E pageMaps(E page, Wrapper<T> queryWrapper) { 
        
        return this.getBaseMapper().selectMapsPage(page, queryWrapper);
    }

    default <E extends IPage<Map<String, Object>>> E pageMaps(E page) { 
        
        return this.pageMaps(page, Wrappers.emptyWrapper());
    }

    BaseMapper<T> getBaseMapper();

    default QueryChainWrapper<T> query() { 
        
        return ChainWrappers.queryChain(this.getBaseMapper());
    }

    default LambdaQueryChainWrapper<T> lambdaQuery() { 
        
        return ChainWrappers.lambdaQueryChain(this.getBaseMapper());
    }

    default UpdateChainWrapper<T> update() { 
        
        return ChainWrappers.updateChain(this.getBaseMapper());
    }

    default LambdaUpdateChainWrapper<T> lambdaUpdate() { 
        
        return ChainWrappers.lambdaUpdateChain(this.getBaseMapper());
    }

    default boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper) { 
        
        return this.update(entity, updateWrapper) || this.saveOrUpdate(entity);
    }
}

当我们接口继承了IService接口之后,即可使用接口中全部方法。 而在实现类中也需要去继承ServiceImpl,在mapper接口中需要继承BaseMapper接口。

二、实体类关联

1.实体类表映射关系

表p_project 在这里插入图片描述 实体类:

重点:

@TableName(“p_project”)指明数据库表名,字段写法为驼峰方式。不能多不能少。 如果在查询过程中实体类中需要字段,但是表中不需要字段时,添加exist = false注解。

@TableField(exist = false)

long数据在转换过程中最后两位可能会显示00,可以在实体类属性上添加

@JsonFormat(shape = JsonFormat.Shape.STRING)

表中出现关键字查询是报错,实体类上加注解,sql查询时带入了单引号。

@TableField("'status'")

新增时默认为自增,需要在表字段设置自增。 实体类中表明,或者配置文件中说明自增。

@TableId(type = IdType.AUTO)

网上生成的雪花算法对应的IdType.ASSIGN_ID,数据库表字段类型为bigint或者long,都没有成功,设置为string成功。

@TableId(type = IdType.ASSIGN_ID)

三. CRUD方法(IService)

save方法

save代码如下(示例):

default boolean save(T entity) { 
        
        return SqlHelper.retBool(this.getBaseMapper().insert(entity));
    }

this.getBaseMapper()指向baseMapper,通过实体类映射表 批量插入

default boolean saveBatch(Collection<T> entityList) { 
        
        return this.saveBatch(entityList, 1000);
    }

remove

  1. ——主键id删除方法
default boolean removeById(Serializable id) { 
        
        return SqlHelper.retBool(this.getBaseMapper().deleteById(id));
    }
  1. 自定义删除
default boolean remove(Wrapper<T> queryWrapper) { 
        
        return 
        标签: powere继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司