zoukankan      html  css  js  c++  java
  • mybatis-plus一些通用方法

    wrapper介绍:

    1. AbstractWrapper: 用于查询条件封装,生成sql的where条件
    2. AbstractLambdaWrapper: Lambda语法使用Wrapper统一处理解析lambda获取column
    3. QueryWrapper: Entity 对象封装操作类,不是用lambda
    4. UpdateWrapper: Update条件封装,用于Entity对象更新操作

    CURD接口

    Mapper CRUD接口

    int  insert  (T entity)//插入一条记录
    deleteById(Serializable id) //根据Id删除
    deleteByMap( Map<String, Object> columnMap) // 根据 columMap条件删除记录
    int delete( Wrapper<T> wrapper)//根据wrapper里面Entity条件删除
    int deleteBatchIds( Collection<? extends Serializable> idList); //根据ID批量删除
    int updateById(T entity);//根据ID修改
    int update(T entity, Wrapper<T> updateWrapper);//entity作为set条件值,updateWrapprt里面的entity用于生成where条件值
    T seleteById(String id) //根据id查询
    List<T> selectBatchIds( Collection<? extends Serializable> idList);//根据id批量查询
    List<T> selectByMap( Map<String, Object> columnMap);//根据map条件
    T selectOne( Wrapper<T> queryWrapper);//根据wrapper里面的entity查找,如果不是唯一需要添加wrapper.last("limit 1")
    Integer selectCount( Wrapper<T> queryWrapper);//根据wrapper条件查询总数
    List<T> selectList(Wrapper<T> queryWrapper); //根据条件查询实体集合
    List<Map<String, Object>> selectMaps( Wrapper<T> queryWrapper);//根据 Wrapper 条件,查询全部记录
    List<Object> selectObjs( Wrapper<T> queryWrapper);//根据 Wrapper 条件,查询全部记录, 注意: 只返回第一个字段的值
    Page<T> selectPage(IPage<T> page, Wrapper<T> queryWrapper);返回实体分页对象
    IPage<Map<String, Object>> selectMapsPage(IPage<T> page, Wrapper<T> queryWrapper);//返回字段映射对象 Map 分页对象;
    

    Service CURD接口

    boolean save(T entity);
    boolean saveBatch(Collection<T> entityList);
    boolean saveBatch(Collection<T> entityList, int batchSize);//batchSize每次的数量
    boolean saveOrUpdateBatch(Collection<T> entityList);//批量修改插入
    boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);
    boolean removeById(Serializable id);
    boolean removeByMap(Map<String, Object> columnMap);
    boolean remove(Wrapper<T> queryWrapper);//queryWrapper 实体包装类,根据entuty条件删除
    boolean removeByIds(Collection<? extends Serializable> idList);
    boolean updateById(T entity);
    boolean update(T entity, Wrapper<T> updateWrapper);
    boolean updateBatchById(Collection<T> entityList, int batchSize);//批量更新
    boolean saveOrUpdate(T entity);//TableId 注解存在更新记录,否插入一条记录
    T getById(Serializable id);//根据id查询
    Collection<T> listByIds(Collection<? extends Serializable> idList);//查询(根据ID 批量查询)
    Collection<T> listByMap(Map<String, Object> columnMap);
    T getOne(Wrapper<T> queryWrapper, boolean throwEx);//throwEx   有多个 result 是否抛出异常
    Map<String, Object> getMap(Wrapper<T> queryWrapper);//根据 Wrapper,查询一条记录
    Object getObj(Wrapper<T> queryWrapper);//根据 Wrapper,查询一条记录
    int count(Wrapper<T> queryWrapper);//根据 Wrapper 条件,查询总记录数
    List<T> list(Wrapper<T> queryWrapper);//查询列表
    IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper);//page为翻页对象
    List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper);//查询列表
    List<Object> listObjs(Wrapper<T> queryWrapper);//根据 Wrapper 条件,查询全部记录
    IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper);
    

    构造器方法

    在这里插入图片描述

    常用方法

    修改指定值

    UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
    userUpdateWrapper.eq("name", "lqf");
    int update = mapper.update(user, userUpdateWrapper);
    

    查找不为空

    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("name", "lqf");
    queryWrapper.isNotNull("name");
    

    查询为某列为空或等于某值/查询A列等于某值或B列等于某值

    //查询班级Id为空或者为指定值
    
    
    query.lambda()
                        .and(Obj ->
                                Obj.eq(User::getClazzId, (String) params.get("clszzId")).or().isNull(User::getClazzId));
    
    //查询A列等于某值或B列等于某值
    //(id='columnId' 'or' parent_id='columnId') and 1=1
     if(StringUtil.isNotBlank(columnId)) {
                    StringBuilder column = new StringBuilder("(id='");
                    column.append(columnId);
                    column.append("' or ");
                    column.append("parent_id = '");
                    column.append(columnId);
                    column.append("') and 1 ");
    
                    query.eq(column.toString(), "1");  //自己
                }
    

    根据时间区间查询

    //这里前端采用vue的日期时间插件将值赋给orderTime,传到后台做日期区间查询
    
    <el-date-picker
         style=" 30%;margin-right: 20px"
         value-format="yyyy-MM-dd"
         v-model="orderTime"
         type="daterange"
         range-separator="-"
         start-placeholder="开始日期"
         end-placeholder="结束日期">
    </el-date-picker>
    
    AbstractWrapper query = new QueryWrapper<>();
    String beginOrderTime = (String) params.get("time[0]");
    String endOrderTime = (String) params.get("time[1]");
    
    if (StringUtil.isNotBlank(beginOrderTime) && StringUtil.isNotBlank(endOrderTime)) {
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
         Date beginTime = formatter.parse(beginOrderTime);
         Date endTime = formatter.parse(endOrderTime);
         query.between("creation_time", beginTime, endTime);
     }
    

    and or

    1
    QueryWrapper userWrapper = new QueryWrapper();
    userWrapper.eq("name", name);
    userWrapper.eq("pwd", pwd).or().eq("phone", phone);

    这种写法拼出来的SQL语句是这样的
    select * from user where (name = ? and pwd= ? or phone = ?)

    2
    QueryWrapper userWrapper = new QueryWrapper();
    userWrapper.eq("name", name);
    userWrapper.and(wrapper -> wrapper.eq("pwd", pwd).or().eq("phone", phone));

    这种写法拼出来的SQL语句是这样的
    select * from user where name = ? and ( pwd= ? or phone = ?)

    批量删除

     String[] ids = ids.split(",");
     List<String> idList = Arrays.asList(ids);
     eventService.removeByIds(idList);
    

    存在||不存在

     AbstractWrapper queryTags = new QueryWrapper<>();
     queryTags.in("id", ids);
     List<PubTag> pubTagList = pubTagService.list(queryTags);
    

    查询指定列

     QueryWrapper query = new QueryWrapper();
     query.select("id", "name");
    

    查到指定条数数据

        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getStatus,3)..last("limit 500");
    
    
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("type", "1").last(" limit 500 ");
    
    
  • 相关阅读:
    上传base64编码图片
    mysql
    当程序员老去 揭秘不为人知背后的辛酸故事
    Java中break的作用
    Random类
    使用dsoframer控件出现"Unable to display the inactive document. Click here to reactivate the document."的问题
    给IT新人的15个建议:苦逼程序员的辛酸反省与总结
    XML开发总结
    解决Office软件冲突问题
    PopupMenu控件的使用
  • 原文地址:https://www.cnblogs.com/xiaoyinger/p/12018359.html
Copyright © 2011-2022 走看看