一、源碼解析:
/** * 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);}
}
(以上是對網上查閱的資料進行了總結,不保證一定正確,見諒……)
