精华内容
下载资源
问答
  • 注明:上篇文章介绍了...条件构造器咱们讲述queryWrapper和updateWrapper的用法、关系、以及强大之处。 首先在这里写下官方文档的链接位置,官方文档说的很详细。如果还想知道在项目中的具体用法请往下看。 ...

    注明:上篇文章介绍了springboot+mybatis-plus通用CRUD的用法,这篇文章我们来介绍一下mybatis-plus强大的条件构造器。mybatis-plus的版本为最新版3.0.3 。条件构造器咱们讲述queryWrapper和updateWrapper的用法、关系、以及强大之处。

    首先在这里写下官方文档的链接位置,官方文档说的很详细。如果还想知道在项目中的具体用法请往下看。

    一、条件构造器关系介绍

    在这里插入图片描述

    介绍 :

    1. 上图绿色框为抽象类abstract
    2. 蓝色框为正常class类,可new对象
    3. 黄色箭头指向为父子类关系,箭头指向为父类

    wapper介绍 :

    1. Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示
    2. AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
    3. AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
    4. LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
    5. LambdaUpdateWrapper : Lambda 更新封装Wrapper
    6. QueryWrapper : Entity 对象封装操作类,不是用lambda语法
    7. UpdateWrapper : Update 条件封装,用于Entity对象更新操作

    二、项目实例

    在这里我以QueryWrapper和UpdateWrapper为例,进行测试讲解。我会在上篇博客原有的基础上进行测试,如果不喜欢搭建项目的可直接下载我上个项目,上个项目的博客对应上个项目的讲解
    在这里插入图片描述

    上图表格为条件构造器使用中的各个方法格式和说明,如有不懂可参考官方文档内容

    构造器条件

    package com.lqf.crud;
    
    import com.baomidou.mybatisplus.core.conditions.Wrapper;
    import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.core.toolkit.Constants;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import com.lqf.crud.bean.crm.User;
    import com.lqf.crud.dao.crm.UserMapper;
    import com.sun.org.apache.xerces.internal.util.EntityResolverWrapper;
    import org.apache.ibatis.annotations.Param;
    import org.apache.ibatis.session.RowBounds;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.springframework.web.jsf.el.WebApplicationContextFacesELResolver;
    
    import javax.naming.Name;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class QueryWrapperTests {
    
        @Autowired
        private UserMapper mapper;
    
        /**
         * <p>
         * 根据根据 entity 条件,删除记录,QueryWrapper实体对象封装操作类(可以为 null)
         * 下方获取到queryWrapper后删除的查询条件为name字段为null的and年龄大于等于12的and email字段不为null的
         * 同理写法条件添加的方式就不做过多介绍了。
         * </p>
         */
        @Test
        public void delete() {
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper
                    .isNull("name")
                    .ge("age", 12)
                    .isNotNull("email");
            int delete = mapper.delete(queryWrapper);
            System.out.println("delete return count = " + delete);
        }
    
    
        /**
         * <p>
         * 根据 entity 条件,查询一条记录,
         * 这里和上方删除构造条件一样,只是seletOne返回的是一条实体记录,当出现多条时会报错
         * </p>
         */
        @Test
        public void selectOne() {
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("name", "lqf");
    
            User user = mapper.selectOne(queryWrapper);
            System.out.println(user);
        }
    
    
        /**
         * <p>
         * 根据 Wrapper 条件,查询总记录数
         * </p>
         *
         * @param queryWrapper 实体对象
         */
        @Test
        public void selectCount() {
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("name", "lqf");
    
            Integer count = mapper.selectCount(queryWrapper);
            System.out.println(count);
        }
    
    
        /**
         * <p>
         * 根据 entity 条件,查询全部记录
         * </p>
         *
         * @param queryWrapper 实体对象封装操作类(可以为 null)为null查询全部
         */
        @Test
        public void selectList() {
            List<User> list = mapper.selectList(null);
    
            System.out.println(list);
        }
    
        /**
         * <p>
         * 根据 Wrapper 条件,查询全部记录
         * </p>
         *
         * @param queryWrapper 实体对象封装操作类(可以为 null)
         */
        @Test
        public void selectMaps() {
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper.isNotNull("name");
            List<Map<String, Object>> maps = mapper.selectMaps(queryWrapper);
            for (Map<String, Object> map : maps) {
                System.out.println(map);
            }
        }
    
        /**
         * 打印结果
         * {name=lqf, id=1046282328366391406, age=12, email=lqf@163.com, status=false}
         * {name=lqf, id=1046282328366391407, age=12, email=lqf@163.com, status=false}
         * {name=lqf, id=1046282328366391408, age=12, email=lqf@163.com, status=false}
         * {name=lqf, id=1046282328366391409, age=12, email=lqf@163.com, status=false}
         * {name=lqf, id=1046282328366391410, age=12, email=lqf@163.com, status=false}
         * {name=lqf, id=1046282328366391411, age=12, email=lqf@163.com, status=false}
         * {name=lqf, id=1046282328366391412, age=12, email=lqf@163.com, status=false}
         * {name=lqf, id=1046282328366391413, age=12, email=lqf@163.com, status=false}
         * {name=lqf, id=1046282328366391414, age=12, email=lqf@163.com, status=false}
         * {name=lqf, id=1046282328366391415, age=12, email=lqf@163.com, status=false}
         * {name=lqf, id=1046282328366391416, age=12, email=lqf@163.com, status=false}
         * {name=lqf, id=1046282328366391417, age=12, email=lqf@163.com, status=false}
         * {name=lqf, id=1046282328366391418, age=12, email=lqf@163.com, status=false}
         * json类型的键值对模式
         */
    
        /**
         * <p>
         * 根据 entity 条件,查询全部记录(并翻页)
         * </p>
         *
         * @param page         分页查询条件(可以为 RowBounds.DEFAULT)
         * @param queryWrapper 实体对象封装操作类(可以为 null)
         */
        @Test
        public void selectPage() {
            Page<User> page = new Page<>(1, 5);
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    
            IPage<User> userIPage = mapper.selectPage(page, queryWrapper);
            System.out.println(userIPage);
        }
    
        /**
         * 打印结果
         * ==>  Preparing: SELECT COUNT(1) FROM user
         * ==> Parameters:
         * <==    Columns: COUNT(1)
         * <==        Row: 100
         * ==>  Preparing: SELECT id,name,age,email,status FROM user LIMIT 0,5
         * ==> Parameters:
         * <==    Columns: id, name, age, email, status
         * <==        Row: 1046282328366391319, lqf, 12, lqf@163.com, 0
         * <==        Row: 1046282328366391320, lqf, 12, lqf@163.com, 0
         * <==        Row: 1046282328366391321, lqf, 12, lqf@163.com, 0
         * <==        Row: 1046282328366391322, lqf, 12, lqf@163.com, 0
         * <==        Row: 1046282328366391323, lqf, 12, lqf@163.com, 0
         * <==      Total: 5
         *
         *
         * 这里需要在项目中加入分页插件
         *   @Bean
         *     public PaginationInterceptor paginationInterceptor() {
         *         return new PaginationInterceptor();
         *     }
         */
    
    
        /**
         * <p>
         * 根据 Wrapper 条件,查询全部记录(并翻页)
         * </p>
         *
         * @param page         分页查询条件
         * @param queryWrapper 实体对象封装操作类
         */
        @Test
        public void selectMapsPage() {
            Page<User> page = new Page<>(1, 5);
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    
            IPage<Map<String, Object>> mapIPage = mapper.selectMapsPage(page, queryWrapper);
            System.out.println(mapIPage);
        }
    
        /**
         * 和上个分页同理只是返回类型不同
         */
    
    
        /**
         * <p>
         * 根据 whereEntity 条件,更新记录
         * </p>
         *
         * @param entity        实体对象 (set 条件值,不能为 null)
         * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
         */
        @Test
        public void update() {
    
            //修改值
            User user = new User();
            user.setStatus(true);
            user.setName("zhangsan");
    
            //修改条件s
            UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
            userUpdateWrapper.eq("name", "lqf");
    
            int update = mapper.update(user, userUpdateWrapper);
    
            System.out.println(update);
        }
    
        /**
         * 打印结果
         * ==>  Preparing: UPDATE user SET name=?, status=? WHERE name = ?
         * ==> Parameters: zhangsan(String), true(Boolean), lqf(String)
         * <==    Updates: 100
         * Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@56a4f272]
         * 100
         * 2018-10-02 15:08:03.928  INFO 7972 --- [       Thread-2] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@37313c65: startup date [Tue Oct 02 15:08:00 CST 2018]; root of context hierarchy
         * 2018-10-02 15:08:03.937  INFO 7972 --- [       Thread-2] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
         * 2018-10-02 15:08:04.053  INFO 7972 --- [       Thread-2] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
         *
         * Process finished with exit code 0
         */
    
    }
    
    

    上方代码对通过构造器条件进行的查询、删除、修改进行是演示,构造器方法没有做过多演示,但是所有的构造器方法同理使用,如果还有不会用的点开看官方文档查看并按照上方例子使用即可。

    源码下载地址

    上一篇 :(四) springboot + mybatis plus详细拆解CRUD
    下一篇 : (六)springboot + mybatis plus实现多表联查分页3.X版本

    展开全文
  • Wrapper

    千次阅读 2005-07-23 13:10:00
    A Wrapper is a Container that represents an individual servlet definition from the deployment descriptor of the web application. It provides a convenient mechanism to use Interceptors that see every s
    A Wrapper is a Container that represents an individual servlet definition from the deployment descriptor of the web application. It provides a convenient mechanism to use Interceptors that see every single request to the servlet represented by this definition. 

    Implementations of Wrapper are responsible for managing the servlet life cycle for their underlying servlet class, including calling init() and destroy() at appropriate times, as well as respecting the existence of the SingleThreadModel declaration on the servlet class itself.

    The parent Container attached to a Wrapper will generally be an implementation of Context, representing the servlet context (and therefore the web application) within which this servlet executes.

    Being the lowest in the "hierarchy",Child Containers are not allowed on Wrapper implementations, so the addChild() method should throw an IllegalArgumentException.

    展开全文
  • wrapper

    2009-06-15 13:13:00
    通过一定的方法,一个对象封装或授权另一个对象来改变它的接口或者行为。

    通过一定的方法,一个对象封装或授权另一个对象来改变它的接口或者行为。

    展开全文
  • servicewrapper:servicewrapper
  • QueryWrapper用法

    万次阅读 2020-04-29 17:14:09
    QueryWrapper用法1: public IPage initAppEvaluateInfoBaseInfoIdVO(String elderId){ List evaluateInfoBaseInfoIdVOList = new ArrayList(); QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq...

    QueryWrapper用法1:

       public IPage<EvaluateInfoBaseInfoIdVO> initAppEvaluateInfoBaseInfoIdVO(String elderId){
            List<EvaluateInfoBaseInfoIdVO> evaluateInfoBaseInfoIdVOList = new ArrayList<EvaluateInfoBaseInfoIdVO>();
            QueryWrapper<EvaluateBaseInfo> queryWrapper = new QueryWrapper<EvaluateBaseInfo>();
            queryWrapper.eq("del_flag",0);
            queryWrapper.eq("elder_id",elderId);
            List<EvaluateBaseInfo> evaluateBaseInfoList = this.baseMapper.selectList(queryWrapper);
            //处理一个老人多次评估
            for (EvaluateBaseInfo base :evaluateBaseInfoList){
                evaluateInfoBaseInfoIdVOList.add(this.initOne(base.getId()));
            }
            Page<EvaluateInfoBaseInfoIdVO> page = new Page<EvaluateInfoBaseInfoIdVO>();
            page.setRecords(evaluateInfoBaseInfoIdVOList);
            return page;
        }
    

    用法2:

      List<SysUserRole> userRole = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, userid));
    
    展开全文
  • windows wrapper

    2018-10-25 10:53:27
    windows wrapper 相关文件,包括wrapper相关文档、配置说明文档。实现通过windows服务的方式启动java项目
  • maven wrapper

    2018-10-13 15:13:03
    Java Maven Wrapper 0.4.2独立Jar包。
  • Wrapper problems

    2021-01-07 03:45:18
    wrapper | Wrapper Process has not received any CPU time for 12 seconds. Extending timeouts. wrapper | Launching a JVM... jvm 1 | WrapperManager: Initializing... wrapper | Wrapper Process has not ...
  • Rename wrapper

    2020-12-02 06:57:54
    Can I rename the wrapper? <img alt="New Picture" src="https://img-blog.csdnimg.cn/img_convert/a1bda861da36cede8f07eb9873704db3.png" /></p> <p>The wrapper is used to differ or protect elements from ...
  • Wrapper Library (或者也叫 library Wrapper)包含一个封装层,该封装层负责将现存的接口转换为更加灵活的接口。这么做的原因主要有: 1. 对原来的低级、复杂的设计进行优化 例如,有一坨祖传代码,但是祖传代码...
  • Maven Wrapper

    2020-01-09 20:08:15
    Maven Wrapper
  • 什么是xlc-wrapper 只是xlc-wrapper :) 作者:理查德·哈里斯(Richard Harris) :copyright:2016-2018 RocketSoftware,Inc.或其附属公司。 版权所有。
  • windows程序设计(珍藏版)_wrapper_wrapperwindows程序设计(珍藏版)_wrapper_wrapperwindows程序设计(珍藏版)_wrapper_wrapper
  • MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用

    万次阅读 多人点赞 2020-06-05 15:44:53
    假如我们有一张banner_item表,现需要通过banner_id查出所有数据 @Data public class BannerItem { private Long id; private String name; ... private String img;...QueryWrapper 最基础的使用方式
  • Wrapper,QueryWrapper,UpdateWrapper作用 最近初学springboot,其中整合mybatis plus的增删改查的方法用到Wrapper,QueryWrapper,UpdateWrapper起初不懂什么意思,只是跟着视频敲代码,后通过找资料和看源码才大概知道...
  • gradle-wrapper.properties中各属性的含义

    万次阅读 多人点赞 2017-02-13 00:02:57
    gradle-wrapper.properties中各属性的含义1. gradle-wrapper.properties每一个用gradle编译的工程,都会有一个gradle\wrapper目录。该目录下有2个文件:gradle-wrapper.jar和gradle-wrapper.properties。其中gradle-...
  • Wrapper License Issue

    2021-01-07 06:09:31
    ERROR | wrapper | 2015/09/17 07:21:11 | A valid license was not found in the Wrapper configuration file. ERROR | wrapper | 2015/09/17 07:21:11 | ERROR | wrapper | 2015/09/17 07:21:11 | The Java ...
  • Fix wrapper issues

    2020-12-08 20:59:21
    <div><ul><li>Settings chosen on install time, eg max_memory, is not reflected in tools/yajsw/conf/wrapper.conf making the db be run with default memory allocation, currently 1024 MB by the wrapper....
  • Gradle Wrapper

    2018-03-30 08:29:06
    本文讲述Gradle Wrapper,默认您已经掌握了相关知识 简介 Wrapper是对Gradle的一层包装,便于在团队开发过程中统一Gradle构建的版本。 Wrapper启动Gradle时会检查Gradle有没有被下载关联,若没有就会从配置...
  • Modern wrapper plan

    2020-11-21 02:31:45
    wrapper</li><li>[x] Add pybind wrapper version (purely additive, duplicates all python scripts/tests into gtsam_py, includes GTSAM changes), ~fix Values~ (done), PR to feature/new_wrapper</li><li>[x] ...
  • 开源项目中经常见到工程下存在可以运行的maven bat和gradle bat, 这样可以保证Maven和Gradle的版本一致,而且不需要预安装。...第三方的Wrapper, 安装: mvn -N io.takari:maven:wrapper, 使用:./mvnw cl...
  • QueryWrapper

    千次阅读 2019-08-20 08:34:59
    官方文档:https://mp.baomidou.com/guide/wrapper.html#querywrapper select("id", "name", "age") select(i -> i.getProperty().startsWith("test")) controller中使用的例子
  • /home/ghost/ghost2/src/zed-ros-wrapper/zed_wrapper/src/nodelet/src/zed_wrapper_nodelet.cpp: In member function ‘bool zed_wrapper::ZEDWrapperNodelet::on_start_svo_recording(zed_wrapper::start_svo_...
  • 一、下载下载地址...下载包wrapper-linux-x86-64-3.5.30.tar.gz解压tar xvf /usr/file/wrapper-linux-x86-64-3.5.30.tar.gz -C /usr/java/重命名cd /usr/javamv wrapper-lin...
  • EntityWrapper

    千次阅读 2019-03-26 15:30:33
    EntityWrapper<Project> project=new EntityWrapper<>(); project.eq("status",4); projectService.selectList(project) Project project=new Project(); project.setStatus(4)...
  • Windows Service Wrapper

    2018-11-05 09:56:01
    Windows Service Wrapper是一款开源的,可以实现nginx注册为Windows服务的软件工具,非常实用。可以解决nginx每次配置需要手动重启不方便的弊端。
  • The Java Service Wrapper line of products are highly configurable tools which not only allow Java applications to be installed and controlled like native Windows Services or UNIX daemon processes, but...
  • pic_wrapper 和 _wrapper 区别pic_wrapper 和 _wrapper “ _“区别 div class="seriallist-wrapper"中“-”含义
  • Maven Wrapper简介

    千次阅读 2020-01-29 14:43:20
    文章目录简介Maven Wrapper的结构下载Maven Wrapper使用 Maven Wrapper简介 简介 开发java项目少不了要用到maven或者gradle,对比gradle而言,可能maven要更加常用一些。要使用maven那就必要要安装maven,如果有些用户...
  • discord.wrapper-源码

    2021-04-06 21:56:29
    python3 -m pip install discord.wrapper 机器人例子 from discord import wrapper bot = wrapper . Bot ( token = "Your Bot Token" ) bot . run () 子类Bot from discord import wrapper class MyBot ( wrapper ....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,718
精华内容 29,887
热门标签
关键字:

wrapper