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);
}

 

二、方法应用:

  1 public class TestMapper {
  2 
  3     @Resource
  4     private UserMapper userMapper;
  5 
  6     /**
  7      * 获取所有用户
  8      */
  9     @Test
 10     public void selectList(){
 11         List<User> userList = userMapper.selectList(null);
 12         userList.forEach(System.out::println);
 13     }
 14 
 15     /**
 16      * 根据指定条件 查询符合条件的用户 (selectList传参数的查询形式)
 17      */
 18     @Test
 19     public void selectAllList(){
 20         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
 21         queryWrapper.ge("age",23);
 22         List<User> userList = userMapper.selectList(queryWrapper);
 23         userList.forEach(System.out::println);
 24     }
 25 
 26     /**
 27      * 根据 id 查询指定用户
 28      */
 29     @Test
 30     public void selectById(){
 31         User user = userMapper.selectById(1);
 32         System.out.println(user);
 33     }
 34 
 35     /**
 36      * 根据 ID 批量查询用户
 37      */
 38     @Test
 39     public void selectBatchIds(){
 40         List<Integer> integers = Arrays.asList(1,2,3);
 41         List<User> userList = userMapper.selectBatchIds(integers);
 42         userList.forEach(System.out::println);
 43     }
 44 
 45     /**
 46      * 根据 Map搜索条件查询指定条件下的用户
 47      */
 48     @Test
 49     public void selectByMap(){
 50         Map<String,Object> map = new HashMap<>();
 51         map.put("name","Tom");
 52         List<User> userList = userMapper.selectByMap(map);
 53         userList.forEach(System.out::println);
 54     }
 55 
 56     /**
 57      * wrapper 查询一条数据
 58      */
 59     @Test
 60     public void selectOne(){
 61         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
 62         queryWrapper.eq("name","Tom");
 63         User user = userMapper.selectOne(queryWrapper);
 64         System.out.println(user);
 65     }
 66 
 67     /**
 68      * 根据指定条件查询符合条件的记录数
 69      */
 70     @Test
 71     public void selectCount(){
 72         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
 73         queryWrapper.gt("age",20);
 74         Integer count = userMapper.selectCount(queryWrapper);
 75         System.out.println(count);
 76     }
 77 
 78 
 79 
 80     /**
 81      * 根据指定条件查询用户
 82      */
 83     @Test
 84     public void selectMaps(){
 85         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
 86         queryWrapper.ge("age",23);
 87         List<Map<String, Object>> mapList = userMapper.selectMaps(queryWrapper);
 88         mapList.forEach(System.out::println);
 89     }
 90 
 91     /**
 92      * 根据指定条件查询符合条件的用户 (只返回第一个字段值)
 93      */
 94     @Test
 95     public void selectObjs(){
 96         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
 97         queryWrapper.ge("age",23);
 98         List<Object> list = userMapper.selectObjs(queryWrapper);
 99         list.forEach(System.out::println);
100     }
101 
102     /**
103      * 查询所有用户并分页
104      */
105     @Test
106     public void selectPage(){
107         Page<User> page = new Page<>(1,2);
108         IPage<User> userIPage = userMapper.selectPage(page, null);
109         System.out.println("总记录数:"+userIPage.getTotal());
110         System.out.println("总页数:"+userIPage.getPages());
111         List<User> userList = userIPage.getRecords();
112         userList.forEach(System.out::println);
113     }
114 
115     /**
116      * 查询所有用户并分页
117      */
118     @Test
119     public void selectMapsPage(){
120         Page<User> page = new Page<>(1,2);
121         IPage<Map<String, Object>> mapIPage = userMapper.selectMapsPage(page, null);
122         System.out.println("总记录数:"+mapIPage.getTotal());
123         System.out.println("总页数:"+mapIPage.getPages());
124         List<Map<String, Object>> records = mapIPage.getRecords();
125         records.forEach(System.out::println);
126     }
127 
128     /**
129      * 插入一条记录
130      */
131     @Test
132     public void insert(){
133         User user = new User();
134         user.setUsername("zhangsan");
135         user.setEmail("777@qq.com");
136         user.setAge(33);
137         int i = userMapper.insert(user);
138         System.out.println(i);
139     }
140 
141     /**
142      * 根据ID删除一条记录
143      */
144     @Test
145     public void deleteById(){
146         int i = userMapper.deleteById(8);
147         System.out.println(i);
148     }
149 
150     /**
151      * 根据指定 Map 条件删除记录
152      */
153     @Test
154     public void deleteByMap(){
155         Map<String,Object> map = new HashMap<>();
156         map.put("age",23);
157         int i = userMapper.deleteByMap(map);
158         System.out.println(i);
159     }
160 
161     /**
162      * 根据指定 Wrapper 条件删除记录
163      */
164     @Test
165     public void delete(){
166         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
167         queryWrapper.likeRight("name","B");
168         int i = userMapper.delete(queryWrapper);
169         System.out.println(i);
170     }
171 
172     /**
173      * 根据指定ID批量删除记录
174      */
175     @Test
176     public void deleteBatchIds(){
177         List<Integer> integers = Arrays.asList(1, 2);
178         int i = userMapper.deleteBatchIds(integers);
179         System.out.println(i);
180     }
181 
182     /**
183      * 根据指定条件更新记录
184      */
185     @Test
186     public void update(){
187         User user = new User();
188         user.setEmail("888@qq.com");
189         UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
190         updateWrapper.eq("name","Jack");
191         int update = userMapper.update(user, updateWrapper);
192         System.out.println(update);
193     }
194 
195     /**
196      * 根据 指定ID 更新记录
197      */
198     @Test
199     public void updateById(){
200         User user = new User();
201         user.setId(1L);
202         user.setEmail("666@qq.com");
203         int i = userMapper.updateById(user);
204         System.out.println(i);
205     }

 

 

publicclassTestMapper{
@Autowiredprivate UserMapper userMapper;

/**
* 获取所有用户
*/
@TestpublicvoidselectList(){
List<User> userList=userMapper.selectList(null);
userList.forEach(System.out::println);}

/**
* 根据指定条件 查询符合条件的用户 (selectList传参数的查询形式)
*/
@TestpublicvoidselectAllList(){
QueryWrapper<User> queryWrapper=newQueryWrapper<>();
queryWrapper.ge("age",23);
List<User> userList=userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);}

/**
*根据 id 查询指定用户
*/
@TestpublicvoidselectById(){
User user=userMapper.selectById(1);
System.out.println(user);}

/**
* 根据 ID 批量查询用户
*/
@TestpublicvoidselectBatchIds(){
List<Integer> integers=Arrays.asList(1,2,3);
List<User> userList=userMapper.selectBatchIds(integers);
userList.forEach(System.out::println);}

/**
* 根据 Map搜索条件查询指定条件下的用户
*/
@TestpublicvoidselectByMap(){
Map<String, Object> map=newHashMap<>();
map.put("name","Tom");
List<User> userList=userMapper.selectByMap(map);
userList.forEach(System.out::println);}

/**
* wrapper 查询一条数据
*/
@TestpublicvoidselectOne(){
QueryWrapper<User> queryWrapper=newQueryWrapper<>();
queryWrapper.eq("name","Tom");
User user=userMapper.selectOne(queryWrapper);
System.out.println(user);}

/**
* 根据指定条件查询符合条件的记录数
*/
@TestpublicvoidselectCount(){
QueryWrapper<User> queryWrapper=newQueryWrapper<>();
queryWrapper.gt("age",20);
Integer count=userMapper.selectCount(queryWrapper);
System.out.println(count);}

/**
* 根据指定条件查询用户
*/
@TestpublicvoidselectMaps(){
QueryWrapper<User> queryWrapper=newQueryWrapper<>();
queryWrapper.ge("age",23);
List<Map<String, Object>>mapList=userMapper.selectMaps(queryWrapper);
mapList.forEach(System.out::println);}

/**
* 根据指定条件查询符合条件的用户 (只返回第一个字段值)
*/
@TestpublicvoidselectObjs(){
QueryWrapper<User> queryWrapper=newQueryWrapper<>();
queryWrapper.ge("age",23);
List<Object> list=userMapper.selectObjs(queryWrapper);
list.forEach(System.out::println);}

/**
* 查询所有用户并分页
*/
@TestpublicvoidselectPage(){
Page<User> page=newPage<>(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);}

/**
* 查询所有用户并分页
*/
@TestpublicvoidselectMapsPage(){
Page<User> page=newPage<>(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);}

/**
* 插入一条记录
*/
@Testpublicvoidinsert(){
User user=newUser();
user.setUsername("zhangsan");
user.setEmail("777@qq.com");
user.setAge(33);int i=userMapper.insert(user);
System.out.println(i);}

/**
* 根据ID删除一条记录
*/
@TestpublicvoiddeleteById(){
int i=userMapper.deleteById(8);
System.out.println(i);
}

/**
* 根据指定 Map 条件删除记录
*/
@TestpublicvoiddeleteByMap(){
Map<String, Object> map=newHashMap<>();
map.put("age",23);int i=userMapper.deleteByMap(map);
System.out.println(i);
}

/**
* 根据指定 Wrapper 条件删除记录
*/
@Testpublicvoiddelete(){
QueryWrapper<User> queryWrapper=newQueryWrapper<>();
queryWrapper.likeRight("name","B");int i=userMapper.delete(queryWrapper);
System.out.println(i);}

/**
* 根据指定ID批量删除记录
*/
@TestpublicvoiddeleteBatchIds(){
List<Integer> integers=Arrays.asList(1,2);
int i=userMapper.deleteBatchIds(integers);
System.out.println(i);}

/**
* 根据指定条件更新记录
*/
@Testpublicvoidupdate(){
User user=newUser();
user.setEmail("888@qq.com");
UpdateWrapper<User> updateWrapper=newUpdateWrapper<>();
updateWrapper.eq("name","Jack");int update=userMapper.update(user,updateWrapper);
System.out.println(update);}
/**
* 根据 指定ID 更新记录
*/
@TestpublicvoidupdateById(){
User user=newUser();
user.setId(1L);
user.setEmail("666@qq.com");int i=userMapper.updateById(user);
System.out.println(i);}
}

 

 

(以上是对网上查阅的资料进行了总结,不保证一定正确,见谅……)

posted @ 2021-01-13 09:35  堇墨傾城  阅读(48815)  评论(0编辑  收藏  举报