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);
        }
  • 相关阅读:
    PAT (Advanced Level) Practice 1054 The Dominant Color (20 分)
    PAT (Advanced Level) Practice 1005 Spell It Right (20 分) (switch)
    PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) (排序)
    hdu 5114 Collision
    hdu4365 Palindrome graph
    单链表查找最大值、两个递增的链表合并并且去重
    蓝桥杯-最短路 (SPFA算法学习)
    蓝桥杯-最大最小公倍数
    Codeforces-470 div2 C题
    蓝桥杯-地宫取宝
  • 原文地址:https://www.cnblogs.com/cy0628/p/15142849.html
Copyright © 2011-2022 走看看