zoukankan      html  css  js  c++  java
  • Mybatis-Plus 之BaseMapper 方法详解

    一、源码解析:

    /**
     * Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能
     * 这个 Mapper 支持 id 泛型*/
    public interface BaseMapper<T> {
     
        /**
         * 插入一条记录
         * @param entity
         * 实体对象
         * @return int
         */
        Integer insert(T entity);
     
        /**
         * 根据 ID 删除
         * @param id
         * 主键ID
         * @return int
         */
        Integer deleteById(Serializable id);
     
        /**
         * 根据 columnMap 条件,删除记录
         * @param columnMap
         * 表字段 map 对象
         * @return int
         */
        Integer deleteByMap(@Param("cm") Map<String, Object> columnMap);
     
        /**
         * 根据 entity 条件,删除记录
         * @param wrapper
         * 实体对象封装操作类(可以为 null)
         * @return int
         */
        Integer delete(@Param("ew") Wrapper<T> wrapper);
     
        /**
         * 删除(根据ID 批量删除)
         * @param idList
         * 主键ID列表
         * @return int
         */
        Integer deleteBatchIds(List<? extends Serializable> idList);
     
        /**
         * 根据 ID 修改
         * @param entity
         * 实体对象
         * @return int
         */
        Integer updateById(T entity);
     
        /**
         * 根据 whereEntity 条件,更新记录
         * @param entity
         * 实体对象
         * @param wrapper
         * 实体对象封装操作类(可以为 null)
         * @return
         */
        Integer update(@Param("et") T entity, @Param("ew") Wrapper<T> wrapper);
     
        /**
         * 根据 ID 查询
         * @param id
         * 主键ID
         * @return T
         */
        T selectById(Serializable id);
     
        /**
         * 查询(根据ID 批量查询)
         * @param idList
         * 主键ID列表
         * @return List<T>
         */
        List<T> selectBatchIds(List<? extends Serializable> idList);
     
        /**
         * 查询(根据 columnMap 条件)
         * @param columnMap
         * 表字段 map 对象
         * @return List<T>
         */
        List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);
     
        /**
         * 根据 entity 条件,查询一条记录
         * @param entity
         * 实体对象
         * @return T
         */
        T selectOne(@Param("ew") T entity);
     
        /**
         * 根据 Wrapper 条件,查询总记录数
         * @param wrapper
         * 实体对象
         * @return int
         */
        Integer selectCount(@Param("ew") Wrapper<T> wrapper);
     
        /**
         * 根据 entity 条件,查询全部记录
         * @param wrapper
         * 实体对象封装操作类(可以为 null)
         * @return List<T>
         */
        List<T> selectList(@Param("ew") Wrapper<T> wrapper);
     
        /**
         * 根据 Wrapper 条件,查询全部记录
         * @param wrapper
         * 实体对象封装操作类(可以为 null)
         * @return List<T>
         */
        List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> wrapper);
     
        /**
         * 根据 Wrapper 条件,查询全部记录
         * @param wrapper
         * 实体对象封装操作类(可以为 null)
         * @return List<Object>
         */
        List<Object> selectObjs(@Param("ew") Wrapper<T> wrapper);
     
        /** 
         * 用法:(new RowBounds(offset, limit), ew);
         * 根据 entity 条件,查询全部记录(并翻页)
         * @param rowBounds
         * 分页查询条件(可以为 RowBounds.DEFAULT)
         * @param wrapper
         * 实体对象封装操作类(可以为 null)
         * @return List<T>
         */
        List<T> selectPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper);
     
        /** -- 不常用,
         * 根据 Wrapper 条件,查询全部记录(并翻页)
         * @param rowBounds
         * 分页查询条件(可以为 RowBounds.DEFAULT)
         * @param wrapper
         * 实体对象封装操作类
         * @return List<Map<String, Object>>
         */
        List<Map<String, Object>> selectMapsPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper);
    }

    二、方法应用:

    public class TestMapper {
    
        @Resource
        private UserMapper userMapper;
    
        /**
         * 获取所有用户
         */
        @Test
        public void selectList(){
            List<User> userList = userMapper.selectList(null);
            userList.forEach(System.out::println);
        }
    
        /**
         * 根据指定条件 查询符合条件的用户 (selectList传参数的查询形式)
         */
        @Test
        public void selectAllList(){
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper.ge("age",23);
            List<User> userList = userMapper.selectList(queryWrapper);
            userList.forEach(System.out::println);
        }
    
        /**
         * 根据 id 查询指定用户
         */
        @Test
        public void selectById(){
            User user = userMapper.selectById(1);
            System.out.println(user);
        }
    
        /**
         * 根据 ID 批量查询用户
         */
        @Test
        public void selectBatchIds(){
            List<Integer> integers = Arrays.asList(1,2,3);
            List<User> userList = userMapper.selectBatchIds(integers);
            userList.forEach(System.out::println);
        }
    
        /**
         * 根据 Map搜索条件查询指定条件下的用户
         */
        @Test
        public void selectByMap(){
            Map<String,Object> map = new HashMap<>();
            map.put("name","Tom");
            List<User> userList = userMapper.selectByMap(map);
            userList.forEach(System.out::println);
        }
    
        /**
         * wrapper 查询一条数据
         */
        @Test
        public void selectOne(){
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("name","Tom");
            User user = userMapper.selectOne(queryWrapper);
            System.out.println(user);
        }
    
        /**
         * 根据指定条件查询符合条件的记录数
         */
        @Test
        public void selectCount(){
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper.gt("age",20);
            Integer count = userMapper.selectCount(queryWrapper);
            System.out.println(count);
        }
    
    
    
        /**
         * 根据指定条件查询用户
         */
        @Test
        public void selectMaps(){
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper.ge("age",23);
            List<Map<String, Object>> mapList = userMapper.selectMaps(queryWrapper);
            mapList.forEach(System.out::println);
        }
    
        /**
         * 根据指定条件查询符合条件的用户 (只返回第一个字段值)
         */
        @Test
        public void selectObjs(){
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper.ge("age",23);
            List<Object> list = userMapper.selectObjs(queryWrapper);
            list.forEach(System.out::println);
        }
    
        /**
         * 查询所有用户并分页
         */
        @Test
        public void selectPage(){
            Page<User> page = new Page<>(1,2);
            IPage<User> userIPage = userMapper.selectPage(page, null);
            System.out.println("总记录数:"+userIPage.getTotal());
            System.out.println("总页数:"+userIPage.getPages());
            List<User> userList = userIPage.getRecords();
            userList.forEach(System.out::println);
        }
    
        /**
         * 查询所有用户并分页
         */
        @Test
        public void selectMapsPage(){
            Page<User> page = new Page<>(1,2);
            IPage<Map<String, Object>> mapIPage = userMapper.selectMapsPage(page, null);
            System.out.println("总记录数:"+mapIPage.getTotal());
            System.out.println("总页数:"+mapIPage.getPages());
            List<Map<String, Object>> records = mapIPage.getRecords();
            records.forEach(System.out::println);
        }
    
        /**
         * 插入一条记录
         */
        @Test
        public void insert(){
            User user = new User();
            user.setUsername("zhangsan");
            user.setEmail("777@qq.com");
            user.setAge(33);
            int i = userMapper.insert(user);
            System.out.println(i);
        }
    
        /**
         * 根据ID删除一条记录
         */
        @Test
        public void deleteById(){
            int i = userMapper.deleteById(8);
            System.out.println(i);
        }
    
        /**
         * 根据指定 Map 条件删除记录
         */
        @Test
        public void deleteByMap(){
            Map<String,Object> map = new HashMap<>();
            map.put("age",23);
            int i = userMapper.deleteByMap(map);
            System.out.println(i);
        }
    
        /**
         * 根据指定 Wrapper 条件删除记录
         */
        @Test
        public void delete(){
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper.likeRight("name","B");
            int i = userMapper.delete(queryWrapper);
            System.out.println(i);
        }
    
        /**
         * 根据指定ID批量删除记录
         */
        @Test
        public void deleteBatchIds(){
            List<Integer> integers = Arrays.asList(1, 2);
            int i = userMapper.deleteBatchIds(integers);
            System.out.println(i);
        }
    
        /**
         * 根据指定条件更新记录
         */
        @Test
        public void update(){
            User user = new User();
            user.setEmail("888@qq.com");
            UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
            updateWrapper.eq("name","Jack");
            int update = userMapper.update(user, updateWrapper);
            System.out.println(update);
        }
    
        /**
         * 根据 指定ID 更新记录
         */
        @Test
        public void updateById(){
            User user = new User();
            user.setId(1L);
            user.setEmail("666@qq.com");
            int i = userMapper.updateById(user);
            System.out.println(i);
        }
  • 相关阅读:
    多功能回到顶部组件,速度可调控,带隐藏效果,返回过程中可回滚。
    可扩展进度条,商城常用!
    多功能万能模态框插件,项目实用,持续更新中...
    前端页面重构技巧总结TIP【持续更新...】
    微信小程序入门实例之记事本
    webpack1.x环境配置与打包基础【附带各种 "坑" 与解决方案!持续更新中...】
    CSS3利用背景渐变和background-size配合完成渐变与条纹效果[持续更新中...]
    CSS3利用一个div实现内圆角边框效果
    CSS3实现原腾讯视频透明边框,多重边框等(关于边框那些不为人知的事情)
    使用条件注释完成浏览器兼容
  • 原文地址:https://www.cnblogs.com/cy0628/p/15142849.html
Copyright © 2011-2022 走看看