码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Mybatis-Plus:Service接口


    目录

    IService接口

    1、写实体类

    2、写mapper接口

    3、写service接口

    4、写service接口的实现类

    IService自带方法

    1、save

    2、SaveOrUpdate

    3、Remove

    4、Update

    5、Get

    6、List

    7、Page

    8、Count 

    9、query

    10、update


    IService接口

    1、写实体类
    1. @Table("user")
    2. public class User {
    3. @TableId(type = IdType.AUTO)
    4. private Long id;
    5. private String name;
    6. // ...
    7. // 省略getter和setter方法
    8. }
    2、写mapper接口
    1. public interface UserMapper extends BaseMapper<User> {
    2. // 自定义方法
    3. // ...
    4. }
    3、写service接口

    在包结构下创建一个新的Java接口,用于定义业务逻辑的操作。通常,一个Service接口对应一个实体类,继承IService接口,并泛型

    1. public interface UserService extends IService<Users> {
    2. }
    4、写service接口的实现类

    创建一个实现Service接口的类,并使用@Service注解进行标注。同样继承ServiceImpl实现类,并泛型

    1. @Service
    2. public class UserServiceImpl extends ServiceImpl,Users> implements UserService{
    3. }

    IService自带方法

    1、save

    // 插入一条记录(选择字段,策略插入)
    boolean save(T entity);
    // 插入(批量)
    boolean saveBatch(Collection entityList);
    // 插入(批量)
    boolean saveBatch(Collection entityList, int batchSize);

    参数说明

    类型参数名描述
    Tentity实体对象
    CollectionentityList实体对象集合
    intbatchSize插入批次数量
    2、SaveOrUpdate

    // TableId 注解存在更新记录,否插入一条记录
    boolean saveOrUpdate(T entity);
    // 根据updateWrapper尝试更新,否继续执行saveOrUpdate(T)方法
    boolean saveOrUpdate(T entity, Wrapper updateWrapper);
    // 批量修改插入
    boolean saveOrUpdateBatch(Collection entityList);
    // 批量修改插入
    boolean saveOrUpdateBatch(Collection entityList, int batchSize);

    参数说明

    类型参数名描述
    Tentity实体对象
    WrapperupdateWrapper实体对象封装操作类 UpdateWrapper
    CollectionentityList实体对象集合
    intbatchSize插入批次数量
    3、Remove

    // 根据 queryWrapper 设置的条件,删除记录
    boolean remove(Wrapper queryWrapper);
    // 根据 ID 删除
    boolean removeById(Serializable id);
    // 根据 columnMap 条件,删除记录
    boolean removeByMap(Map columnMap);
    // 删除(根据ID 批量删除)
    boolean removeByIds(Collection idList);

    参数说明

    类型参数名描述
    WrapperqueryWrapper实体包装类 QueryWrapper
    Serializableid主键 ID
    MapcolumnMap表字段 map 对象
    CollectionidList主键 ID 列表
    4、Update

    // 根据 UpdateWrapper 条件,更新记录 需要设置sqlset
    boolean update(Wrapper updateWrapper);
    // 根据 whereWrapper 条件,更新记录
    boolean update(T updateEntity, Wrapper whereWrapper);
    // 根据 ID 选择修改
    boolean updateById(T entity);
    // 根据ID 批量更新
    boolean updateBatchById(Collection entityList);
    // 根据ID 批量更新
    boolean updateBatchById(Collection entityList, int batchSize);

    参数说明

    类型参数名描述
    WrapperupdateWrapper实体对象封装操作类 UpdateWrapper
    Tentity实体对象
    CollectionentityList实体对象集合
    intbatchSize更新批次数量
    5、Get

    // 根据 ID 查询
    T getById(Serializable id);
    // 根据 Wrapper,查询一条记录。结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")
    T getOne(Wrapper queryWrapper);
    // 根据 Wrapper,查询一条记录
    T getOne(Wrapper queryWrapper, boolean throwEx);
    // 根据 Wrapper,查询一条记录
    Map getMap(Wrapper queryWrapper);
    // 根据 Wrapper,查询一条记录
    V getObj(Wrapper queryWrapper, Function mapper);

     参数说明

    类型参数名描述
    Serializableid主键 ID
    WrapperqueryWrapper实体对象封装操作类 QueryWrapper
    booleanthrowEx有多个 result 是否抛出异常
    Tentity实体对象
    Functionmapper转换函数
    6、List

    // 查询所有
    List list();
    // 查询列表
    List list(Wrapper queryWrapper);
    // 查询(根据ID 批量查询)
    Collection listByIds(Collection idList);
    // 查询(根据 columnMap 条件)
    Collection listByMap(Map columnMap);
    // 查询所有列表
    List> listMaps();
    // 查询列表
    List> listMaps(Wrapper queryWrapper);
    // 查询全部记录
    List listObjs();
    // 查询全部记录
    List listObjs(Function mapper);
    // 根据 Wrapper 条件,查询全部记录
    List listObjs(Wrapper queryWrapper);
    // 根据 Wrapper 条件,查询全部记录
    List listObjs(Wrapper queryWrapper, Function mapper);

     参数说明

    类型参数名描述
    WrapperqueryWrapper实体对象封装操作类 QueryWrapper
    CollectionidList主键 ID 列表
    MapcolumnMap表字段 map 对象
    Functionmapper转换函数
    7、Page

    // 无条件分页查询
    IPage page(IPage page);
    // 条件分页查询
    IPage page(IPage page, Wrapper queryWrapper);
    // 无条件分页查询
    IPage> pageMaps(IPage page);
    // 条件分页查询
    IPage> pageMaps(IPage page, Wrapper queryWrapper);

     参数说明

    类型参数名描述
    IPagepage翻页对象
    WrapperqueryWrapper实体对象封装操作类 QueryWrapper
    8、Count 

    // 查询总记录数
    int count();
    // 根据 Wrapper 条件,查询总记录数
    int count(Wrapper queryWrapper);

     参数说明

    类型参数名描述
    WrapperqueryWrapper实体对象封装操作类 QueryWrapper
    9、query

    // 链式查询 普通
    QueryChainWrapper query();
    // 链式查询 lambda 式。注意:不支持 Kotlin
    LambdaQueryChainWrapper lambdaQuery();

    1. // 示例:
    2. query().eq("column", value).one();
    3. lambdaQuery().eq(Entity::getId, value).list();
    10、update

    // 链式更改 普通
    UpdateChainWrapper update();
    // 链式更改 lambda 式。注意:不支持 Kotlin
    LambdaUpdateChainWrapper lambdaUpdate();

    1. // 示例:
    2. update().eq("column", value).remove();
    3. lambdaUpdate().eq(Entity::getId, value).update(entity);
    批量新增
    1. @Test//添加一万条数据
    2. public void saveBatch(){
    3. List<Users> list = new ArrayList<>(100);
    4. long b1 = System.currentTimeMillis();
    5. for (long i = 1; i <= 10000; i++) {
    6. if (i % 100 == 0){
    7. userService.saveBatch(list);
    8. list.clear();
    9. }
    10. list.add(users(i));
    11. }
    12. long b2 = System.currentTimeMillis();
    13. System.out.println("耗时:" + (b2 - b1));
    14. }
    15. private Users users(Long i){
    16. Users users = new Users();
    17. users.setId(i);
    18. users.setName("cxk" + i);
    19. return users;
    20. }

    注意:jdbc参数要添加 rewriteBatchedStatements=true参数

    lambdaQuery条件查询

    1. public List<Users> lamdbaQuery(String name,Integer min,Integer max){
    2. List<Users> list = userService.lambdaQuery()
    3. .like(name != null,Users::getName, name)//如果name不是null,则根据名称模糊查询
    4. .gt(min != null,Users::getAge, min)//如果min不是null,查大于多少岁
    5. .lt(max != null,Users::getAge, max)//如果max不是null,查小于多少岁
    6. .list();//结果为集合
    7. return list;
    8. }

  • 相关阅读:
    计及电池储能寿命损耗的微电网经济调度(matlab代码)
    向量矩阵范数pytorch
    线程的创建方式
    蓝牙学习三(GAP)
    day40 设计模式、jdk8新特性
    [车联网安全自学篇] ATTACK安全之Frida反调试检测
    NIFI同步API接口数据
    异步请求池的实现
    成都爱尔胡建斌院长提醒视网膜脱离并非立即失明!这些征兆要注意!
    使用ffmpeg解码mp4文件中某一帧为原始裸数据并保存为yuv420p数据文件
  • 原文地址:https://blog.csdn.net/qi341500/article/details/132918723
    • 最新文章
    • 攻防演习之三天拿下官网站群
      数据安全治理学习——前期安全规划和安全管理体系建设
      企业安全 | 企业内一次钓鱼演练准备过程
      内网渗透测试 | Kerberos协议及其部分攻击手法
      0day的产生 | 不懂代码的"代码审计"
      安装scrcpy-client模块av模块异常,环境问题解决方案
      leetcode hot100【LeetCode 279. 完全平方数】java实现
      OpenWrt下安装Mosquitto
      AnatoMask论文汇总
      【AI日记】24.11.01 LangChain、openai api和github copilot
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
    正则表达式工具 cron表达式工具 密码生成工具

    京公网安备 11010502049817号