ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MyBatisPlus(三、增删改查)

2022-08-16 08:30:43  阅读:181  来源: 互联网

标签:map MyBatisPlus 改查 userMapper System 查询 println 增删 out


目录

前言


  MyBatis非常方便,代码简洁,开发速度极高,通过继承BaseMapper就可以获取到各种各样的单表操作,无需再写其他的接口方法,非常的简便快捷。


我们可以看到BaseMapper 为我们提供了很多方法供我们CRUD使用。

Mapper CRUD 接口

说明:

  • 通用 CRUD 封装[BaseMapper 接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器
  • 泛型 T 为任意实体对象
  • 参数 Serializable为任意类型主键 Mybatis-Plus不推荐使用复合主键约定每一张表都有自己的唯一 id 主键
  • 对象 Wrapper为 条件构造器

1、查询

1、查询所有,不加条件去查询

//1、查询所有,不加条件去查询
userMapper.selectList(null).forEach(System.out::println);       //forEach遍历打印

2、查询所有,加条件去查询

//2、查询所有,加条件去查询
            //2.1、new QueryWrapper
        QueryWrapper queryWrapper1 = new QueryWrapper();
            //2.2、设置条件
        queryWrapper1.eq("age", 20);
  
        userMapper.selectList(queryWrapper1).forEach(System.out::println);
  • lt #小于

    • gt #大于
    • ne #不等于
    • eq #等于
    • le #小于等于
    • ge #大于等于
    • 等等

3、多条件去查询

new一个hashmap,把条件放到map中,再把map放到条件中。

QueryWrapper queryWrapper2 = new QueryWrapper();
           //3.1、设置多条件
           Map<String,Object> map = new HashMap<>();
           map.put("age",20);
           map.put("name","张三");
           //3.2、map放进queryWrapper
        queryWrapper2.allEq(map);

4、分页查询

//4、分页查询
        //1、配置类paginationInterceptor
        //2、设置分页参数
        Page<User> page = new Page<>(1,3);      //当前页,每页显示条数2
        Page<User> userPage = userMapper.selectPage(page, null);//分页参数,查询条件

        System.out.println(userPage.getCurrent());      //当前页
        System.out.println(userPage.getSize());     //每页显示条数

        userPage.getRecords().forEach(System.out::println);     //查询结果

5、等等

@Test
    void select() {
        //1、查询所有,不加条件去查询
        userMapper.selectList(null).forEach(System.out::println);       //forEach遍历打印

        //2、查询所有,加条件去查询
            //2.1、new QueryWrapper
        QueryWrapper queryWrapper1 = new QueryWrapper();
            //2.2、设置条件
        queryWrapper1.eq("age", 20);
        /**
         * lt           #小于
         * gt       #大于
         * ne       #不等于
         * eq       #等于
         * le           #小于等于
         * ge       #大于等于
         * between      #between
         * like like    模糊查询        #likeLeft 左模糊  likeRight 右模糊
         * isNull
         * isNotNull
         * in                         #inSql in sql语句
         * notIn
         * orderBy                  #排序 ASC DESC 升序降序
         * orderByDesc
         */
        userMapper.selectList(queryWrapper1).forEach(System.out::println);

        //3、多条件去查询
        QueryWrapper queryWrapper2 = new QueryWrapper();
            //3.1、设置多条件
            Map<String,Object> map = new HashMap<>();
            map.put("age",20);
            map.put("name","张三");
            //3.2、map放进queryWrapper
        queryWrapper2.allEq(map);

        //byId
        User user = userMapper.selectById(1);
        System.out.println(user);

        //byBatchIds
        userMapper.selectBatchIds(Arrays.asList(1,2,3)).forEach(System.out::println);       //Arrays.asList(1,2,3)是一个数组,把数组转换成list集合

        //通过map条件查询
        //map只能是一个条件,不能是多个条件
        Map<String,Object> map1 = new HashMap<>();
        map1.put("age",20);
        map1.put("name","张三");
        userMapper.selectByMap(map).forEach(System.out::println);

        //4、分组查询
        QueryWrapper queryWrapper3 = new QueryWrapper();
        queryWrapper3.gt("age",20);
        System.out.println(userMapper.selectCount(queryWrapper3));

        //将查询结果放入map中
        userMapper.selectMaps(queryWrapper1).forEach(System.out::println);

        //分页查询
        //1、配置类paginationInterceptor
        //2、设置分页参数
        Page<User> page = new Page<>(1,3);      //当前页,每页显示条数2
        Page<User> userPage = userMapper.selectPage(page, null);//分页参数,查询条件

        System.out.println(userPage.getCurrent());      //当前页
        System.out.println(userPage.getSize());     //每页显示条数

        userPage.getRecords().forEach(System.out::println);     //查询结果


        //封装到map中
        Page<Map<String,Object>> mapPage = new Page<>(1,3);     //分页参数,查询条件
        userMapper.selectMapsPage(mapPage, null).getRecords().forEach(System.out::println);     //查询结果

        //查询所有,只输出id
        userMapper.selectObjs(null).forEach(System.out::println);     //查询结果

        //查询一个
        System.out.println(userMapper.selectOne(null));     //查询结果

    }

2、添加

    /**
     * Insert
     */
    @Test
    void insertTest(){
        User user = new User();
        user.setName("张三");
        user.setAge(20);
        userMapper.insert(user);
        System.out.println(user);
    }

3、删除

    /**
     * Delete
     */
    @Test
    void deleteTest(){
        //通过id删除
        userMapper.deleteById(1);

        //通过多条件id删除
        userMapper.deleteBatchIds(Arrays.asList(1,2,3));

        //通过条件删除
        QueryWrapper queryWrapper = new QueryWrapper ();
        queryWrapper.eq("name","张三");       //与查询相同
        userMapper.delete(queryWrapper);

        //通过条件删除---Map
        Map<String,Object> map = new HashMap<>();
        map.put("name","张三");
        userMapper.deleteByMap(map);

    }

4、修改

   /**
     * Update
     */
    @Test
    void updateTest(){

        //通过id更新
        User user = userMapper.selectById(1);       //查询数据
        user.setName("李四");     //修改数据
        user.setAge(30);
        userMapper.updateById(user);

        //通过QueryWrapper更新
        User user1 = userMapper.selectById(1);      //查询数据
        QueryWrapper queryWrapper = new QueryWrapper();         //构建条件
        queryWrapper.eq("name","张三");
        queryWrapper.eq("age",20);
        userMapper.update(user1,queryWrapper);     //更新数据

    }

5、自定义 SQL(多表关联查询)

当我们需要多表查询时,简单的crud满足不了我们的需求时,我们就需要通过自定义sql,来实现我们的所需的功能。

package com.southwind.mybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.southwind.mybatisplus.entity.ProductVO;
import com.southwind.mybatisplus.entity.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserMapper extends BaseMapper<User> {
    @Select("select p.*,u.name userName from product p,user u where p.user_id = u.id and u.id = #{id}")
    List<ProductVO> productList(Integer id);
}

总结

  Mybatis 为我们提供了基本的增删改查的接口,特别是 Mybatis-Plus 提供的 Wrappers 更是可以组合出更复杂的查询语句以满足我们需求。但有些复杂的操作,比如联表查询等,这些就需要使用自定义 SQL 语句进行操作的。

标签:map,MyBatisPlus,改查,userMapper,System,查询,println,增删,out
来源: https://www.cnblogs.com/xmpy/p/16590320.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有