MyBatis-Plus 快速入门

一时失言乱红尘 2023-03-13 09:26 63阅读 0赞

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

MyBatis-Plus的特点:

  • 润物无声:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑;
  • 效率至上:只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间;
  • 丰富功能:热加载、代码生成、分页、性能分析等功能一应俱全。

本文主要基于 MyBatis-Plus 的官方文档:https://mybatis.plus/guide/ 及 慕课网的 MyBatis-Plus入门:https://www.imooc.com/learn/1130 进行案例说明。

快速开始参考官方文档:https://mybatis.plus/guide/quick-start.html【很详细】

本项目GitHub地址:https://github.com/tyronczt/java-learn/tree/master/Tools/mybatis-plus

CRUD–增加(Create)

GitHub地址:https://github.com/tyronczt/java-learn/blob/master/Tools/mybatis-plus/src/test/java/com/tyron/mp/InsertTest.java

  1. public void insert() {
  2. User user = new User();
  3. user.setName("彭万里");
  4. user.setAge(39);
  5. user.setCreateTime(LocalDateTime.now());
  6. user.setManagerId(1088248166370832385L);
  7. int effectNum = userMapper.insert(user);
  8. Assert.assertEquals(1, effectNum);
  9. }

CRUD–读取(Retrieve)

GitHub地址:https://github.com/tyronczt/java-learn/blob/master/Tools/mybatis-plus/src/test/java/com/tyron/mp/SelectTests.java

  1. /**
  2. * 1、名字中包含雨并且年龄小于40
  3. * name like '%雨%' and age<40
  4. *
  5. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name LIKE ? AND age < ?)
  6. * Parameters: %雨%(String), 40(Integer)
  7. */
  8. @Test
  9. public void selectOne() {
  10. List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().like(User::getName, "雨").lt(User::getAge, 40));
  11. users.forEach(System.out::println);
  12. }
  13. /**
  14. * 2、名字中包含雨年并且龄大于等于20且小于等于40并且email不为空
  15. * name like '%雨%' and age between 20 and 40 and email is not null
  16. *
  17. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name LIKE ? AND age BETWEEN ? AND ? AND email IS NOT NULL)
  18. * Parameters: %雨%(String), 20(Integer), 40(Integer)
  19. */
  20. @Test
  21. public void selectTwo() {
  22. List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().like(User::getName, "雨").between(User::getAge, 20, 40).isNotNull(User::getEmail));
  23. users.forEach(System.out::println);
  24. }
  25. /**
  26. * 3、名字为王姓或者年龄大于等于25,按照年龄降序排列,年龄相同按照id升序排列
  27. * name like '王%' or age>=25 order by age desc,id asc
  28. *
  29. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name LIKE ? OR age >= ?) ORDER BY age DESC , id ASC
  30. * Parameters: 王%(String), 25(Integer)
  31. */
  32. @Test
  33. public void selectThree() {
  34. List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().likeRight(User::getName, "王")
  35. .or().ge(User::getAge, 25).orderByDesc(User::getAge).orderByAsc(User::getId));
  36. users.forEach(System.out::println);
  37. }
  38. /**
  39. * 4、创建日期大于当天并且直属上级为名字为王姓
  40. * date_format(create_time,'%Y-%m-%d')>= LocalDate.now() and manager_id in (select id from user where name like '王%')
  41. *
  42. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (date_format(create_time,'%Y-%m-%d') >= ? AND manager_id IN
  43. * (select id from user where name like '王%'))
  44. *
  45. * Parameters: 2020-04-19(LocalDate)
  46. */
  47. @Test
  48. public void selectFour() {
  49. List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().apply("date_format(create_time,'%Y-%m-%d') >= {0}", LocalDate.now()).
  50. inSql(User::getManagerId, "select id from user where name like '王%'"));
  51. users.forEach(System.out::println);
  52. }
  53. /**
  54. * 5、名字为王姓并且(年龄小于40或邮箱不为空)
  55. * name like '王%' and (age<40 or email is not null)
  56. *
  57. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name LIKE ? AND ( (age < ? OR email IS NOT NULL) ))
  58. * 王%(String), 40(Integer)
  59. */
  60. @Test
  61. public void selectFive() {
  62. List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().likeRight(User::getName, "王").
  63. and(i -> i.lt(User::getAge, 40).or().isNotNull(User::getEmail)));
  64. users.forEach(System.out::println);
  65. }
  66. /**
  67. * 6、名字为王姓或者(年龄小于40并且年龄大于20并且邮箱不为空)
  68. * name like '王%' or (age<40 and age>20 and email is not null)
  69. *
  70. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name LIKE ? OR ( (age < ? AND age > ? AND email IS NOT NULL) ))
  71. * 王%(String), 40(Integer), 20(Integer)
  72. */
  73. @Test
  74. public void selectSix() {
  75. List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().likeRight(User::getName, "王").
  76. or(i -> i.lt(User::getAge, 40).gt(User::getAge, 20).isNotNull(User::getEmail)));
  77. users.forEach(System.out::println);
  78. }
  79. /**
  80. * 7、(年龄小于40或邮箱不为空)并且名字为王姓
  81. * (age<40 or email is not null) and name like '王%'
  82. *
  83. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (( (age < ? OR email IS NOT NULL) ) AND name LIKE ?)
  84. * 40(Integer), 王%(String)
  85. */
  86. @Test
  87. public void selectSeven() {
  88. List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().and(i -> i.lt(User::getAge, 40).
  89. or().isNotNull(User::getEmail)).likeRight(User::getName, "王"));
  90. users.forEach(System.out::println);
  91. }
  92. /**
  93. * 8、年龄为30、31、34、35
  94. * age in (30、31、34、35)
  95. *
  96. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (age IN (?,?,?,?))
  97. * 30(Integer), 31(Integer), 34(Integer), 35(Integer)
  98. */
  99. @Test
  100. public void selectEight() {
  101. List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().in(User::getAge, Arrays.asList(30, 31, 34, 35)));
  102. users.forEach(System.out::println);
  103. }
  104. /**
  105. * 9、只返回满足条件的其中一条语句即可
  106. * limit 1
  107. *
  108. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (age IN (?,?,?,?)) limit 1
  109. * 30(Integer), 31(Integer), 34(Integer), 35(Integer)
  110. */
  111. @Test
  112. public void selectNine() {
  113. List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().in(User::getAge, Arrays.asList(30, 31, 34, 35)).last("limit 1"));
  114. users.forEach(System.out::println);
  115. }
  116. /**
  117. * 10、名字中包含雨并且年龄小于40(需求1加强版)
  118. * 第一种情况:select id,name
  119. * from user
  120. * where name like '%雨%' and age<40
  121. *
  122. * SELECT id,name FROM user WHERE (name LIKE ? AND age < ?)
  123. * Parameters: %雨%(String), 40(Integer)
  124. *
  125. * 第二种情况:select id,name,age,email
  126. * from user
  127. * where name like '%雨%' and age<40
  128. *
  129. * SELECT id,name,email,age FROM user WHERE (name LIKE ? AND age < ?)
  130. * Parameters: %雨%(String), 40(Integer)
  131. */
  132. @Test
  133. public void selectTen1() {
  134. List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().select(User::getId, User::getName).like(User::getName, "雨").lt(User::getAge, 40));
  135. users.forEach(System.out::println);
  136. }
  137. @Test
  138. public void selectTen2() {
  139. List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().select(User.class, one -> !one.getColumn().equals("create_time")
  140. && !one.getColumn().equals("manager_id")).like(User::getName, "雨").lt(User::getAge, 40));
  141. users.forEach(System.out::println);
  142. }
  143. /**
  144. * 11、按照直属上级分组,查询每组的平均年龄、最大年龄、最小年龄。并且只取年龄总和小于500的组。
  145. * select avg(age) avg_age,min(age) min_age,max(age) max_age
  146. * from user group by manager_id
  147. * having sum(age) <500
  148. *
  149. * SELECT avg(age) avg_age,min(age) min_age,max(age) max_age FROM user GROUP BY manager_id HAVING sum(age) < ?
  150. * Parameters: 500(Integer)
  151. */
  152. @Test
  153. public void selectEleven() {
  154. List<Map<String, Object>> users = userMapper.selectMaps(new QueryWrapper<User>().select("avg(age) avg_age", "min(age) min_age", "max(age) max_age").lambda().
  155. groupBy(User::getManagerId).having("sum(age) < {0}", 500));
  156. users.forEach(System.out::println);
  157. }
  158. /**
  159. * 12、按条件查询用户,姓名为王(查询条件有姓名和email)
  160. * 当email为空时,不作为查询条件
  161. *
  162. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name LIKE ?)
  163. * Parameters: %王%(String)
  164. */
  165. @Test
  166. public void selectTwelve() {
  167. String name = "王";
  168. String email = "";
  169. List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().like(StringUtils.isNotEmpty(name), User::getName, name).
  170. like(StringUtils.isNotEmpty(email), User::getEmail, email));
  171. users.forEach(System.out::println);
  172. }
  173. /**
  174. * 根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
  175. *
  176. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name LIKE ?)
  177. * Parameters: %雨%(String)
  178. * result: <== Total: 3
  179. * 1094590409767661570
  180. * 1094592041087729666
  181. * 1251822253776068610
  182. */
  183. @Test
  184. public void selectObjs() {
  185. List<Object> users = userMapper.selectObjs(new QueryWrapper<User>().lambda().like(User::getName, "雨"));
  186. users.forEach(System.out::println);
  187. }
  188. /**
  189. * 根据 Wrapper 条件,查询总记录数
  190. *
  191. * SELECT COUNT( 1 ) FROM user WHERE (name LIKE ?)
  192. * Parameters: %雨%(String)
  193. * 查询数量:3
  194. */
  195. @Test
  196. public void selectCount() {
  197. Integer count = userMapper.selectCount(new QueryWrapper<User>().lambda().like(User::getName, "雨"));
  198. System.out.println("查询数量:" + count);
  199. }
  200. /**
  201. * 根据 entity 条件,查询一条记录
  202. *
  203. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name LIKE ?) limit 1
  204. * Parameters: %雨%(String)
  205. */
  206. @Test
  207. public void selectOneUser() {
  208. User user = userMapper.selectOne(new QueryWrapper<User>().lambda().like(User::getName, "雨").last("limit 1"));
  209. System.out.println("查询用户:" + user);
  210. }
  211. /**
  212. * 通过map查询列表
  213. *
  214. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name = ? AND age = ?)
  215. * Parameters: 李艺伟(String), 28(Integer)
  216. */
  217. @Test
  218. public void selectAlleq() {
  219. HashMap<String, Object> hashMap = new HashMap<>();
  220. hashMap.put("name", "李艺伟");
  221. hashMap.put("age", 28);
  222. hashMap.put("email", null);
  223. List<User> users = userMapper.selectList(new QueryWrapper<User>().allEq(hashMap, false));
  224. users.forEach(System.out::println);
  225. }
  226. /**
  227. * 为了减少实现类的代码量 --> LambdaQueryChainWrapper
  228. *
  229. * Preparing: SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name LIKE ?)
  230. * Parameters: %雨%(String)
  231. */
  232. @Test
  233. public void selectLambdaQueryChainWrapper() {
  234. List<User> users = new LambdaQueryChainWrapper<>(userMapper).like(User::getName, "雨").list();
  235. users.forEach(System.out::println);
  236. }
  237. /*********************************分页方法***************************************/
  238. /**
  239. * SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name LIKE ?) LIMIT ?,?
  240. * Parameters: %雨%(String), 0(Long), 2(Long)
  241. *
  242. * User(id=1094590409767661570, name=张雨琪, age=31, email=zjq@baomidou.com, managerId=1088248166370832385, createTime=2019-01-14T09:15:15)
  243. * User(id=1094592041087729666, name=刘红雨, age=32, email=lhm@baomidou.com, managerId=1088248166370832385, createTime=2019-01-14T09:48:16)
  244. */
  245. @Test
  246. public void selectPage() {
  247. Page<User> page = new Page<>(1, 2, false);
  248. IPage<User> userIPage = userMapper.selectPage(page, new QueryWrapper<User>().lambda().like(User::getName, "雨"));
  249. List<User> records = userIPage.getRecords();
  250. records.forEach(System.out::println);
  251. }
  252. /**
  253. * Preparing: SELECT name FROM user WHERE (name LIKE ?) LIMIT ?,?
  254. * Parameters: %雨%(String), 0(Long), 2(Long)
  255. *
  256. * {name=张雨琪}
  257. * {name=刘红雨}
  258. */
  259. @Test
  260. public void selectMapsPage() {
  261. Page<User> page = new Page<>(1, 2, false);
  262. IPage<Map<String, Object>> userIPage = userMapper.selectMapsPage(page, new QueryWrapper<User>().lambda().select(User::getName).like(User::getName, "雨"));
  263. List<Map<String, Object>> records = userIPage.getRecords();
  264. records.forEach(System.out::println);
  265. }

CRUD–更新(Update)

GitHub地址:https://github.com/tyronczt/java-learn/blob/master/Tools/mybatis-plus/src/test/java/com/tyron/mp/UpdateTest.java

  1. /**
  2. * 根据Id更新记录
  3. * <p>
  4. * UPDATE user SET email=? WHERE id=?
  5. * ==> Parameters: aaa@aa.com(String), 1251822253776068610(Long)
  6. * <== Updates: 1
  7. * 更新记录数:1
  8. */
  9. @Test
  10. public void updateById() {
  11. User user = new User();
  12. user.setId(1251822253776068610L);
  13. user.setEmail("aaa@aa.com");
  14. int effectNum = userMapper.updateById(user);
  15. System.out.println("更新记录数:" + effectNum);
  16. }
  17. /**
  18. * 根据条件更新记录
  19. * <p>
  20. * ==> Preparing: UPDATE user SET age=? WHERE (name LIKE ?)
  21. * ==> Parameters: 30(Integer), %雨%(String)
  22. * <== Updates: 3
  23. * 更新记录数:3
  24. */
  25. @Test
  26. public void updateByWapper() {
  27. User user = new User();
  28. user.setAge(30);
  29. int effectNum = userMapper.update(user, new UpdateWrapper<User>().lambda().like(User::getName, "雨"));
  30. System.out.println("更新记录数:" + effectNum);
  31. }
  32. /**
  33. * 根据条件更新记录(不设置实体类)
  34. * <p>
  35. * ==> Preparing: UPDATE user SET age=? WHERE (name LIKE ?)
  36. * ==> Parameters: 31(Integer), %雨%(String)
  37. * <== Updates: 3
  38. * 更新记录数:3
  39. */
  40. @Test
  41. public void updateByWapperNoEntity() {
  42. UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
  43. updateWrapper.like("name", "雨").set("age", 31);
  44. int effectNum = userMapper.update(null, updateWrapper);
  45. System.out.println("更新记录数:" + effectNum);
  46. }
  47. /**
  48. * 通过lambda链并根据条件更新记录
  49. * <p>
  50. * ==> Preparing: UPDATE user SET age=? WHERE (name LIKE ?)
  51. * ==> Parameters: 32(Integer), %雨%(String)
  52. * <== Updates: 3
  53. * 是否更新成功:true
  54. */
  55. @Test
  56. public void updateByWapperLambdaChain() {
  57. boolean ifUpdate = new LambdaUpdateChainWrapper<>(userMapper).like(User::getName, "雨").set(User::getAge, 32).update();
  58. System.out.println("是否更新成功:" + ifUpdate);
  59. }

CRUD–删除(Delete)

GitHub地址:https://github.com/tyronczt/java-learn/blob/master/Tools/mybatis-plus/src/test/java/com/tyron/mp/DeleteTest.java

  1. /**
  2. * 根据id删除记录
  3. * <p>
  4. * ==> Preparing: DELETE FROM user WHERE id=?
  5. * ==> Parameters: 1251736344246480897(Long)
  6. * <== Updates: 1
  7. * 影响记录数:1
  8. */
  9. @Test
  10. public void delete() {
  11. int effectNum = userMapper.deleteById(1251736344246480897L);
  12. System.out.println("影响记录数:" + effectNum);
  13. }
  14. /**
  15. * 根据map删除记录
  16. * <p>
  17. * ==> Preparing: DELETE FROM user WHERE name = ?
  18. * ==> Parameters: 彭万里(String)
  19. * <== Updates: 1
  20. * 影响记录数:1
  21. */
  22. @Test
  23. public void deleteByMap() {
  24. Map<String, Object> columnMap = new HashMap<>();
  25. columnMap.put("name", "彭万里");
  26. int effectNum = userMapper.deleteByMap(columnMap);
  27. System.out.println("影响记录数:" + effectNum);
  28. }
  29. /**
  30. * 批量删除记录
  31. * <p>
  32. * ==> Preparing: DELETE FROM user WHERE id IN ( ? , ? )
  33. * ==> Parameters: 1259468580001419266(Long), 1259468591753863169(Long)
  34. * <== Updates: 2
  35. * 影响记录数:2
  36. */
  37. @Test
  38. public void deleteBatchIds() {
  39. int effectNum = userMapper.deleteBatchIds(Arrays.asList(1259468580001419266L, 1259468591753863169L));
  40. System.out.println("影响记录数:" + effectNum);
  41. }
  42. /**
  43. * 根据条件删除记录
  44. * <p>
  45. * ==> Preparing: DELETE FROM user WHERE (name = ?)
  46. * ==> Parameters: 欧阳雨(String)
  47. * <== Updates: 1
  48. * 影响记录数:1
  49. */
  50. @Test
  51. public void deleteByWapper() {
  52. int effectNum = userMapper.delete(new QueryWrapper<User>().lambda().eq(User::getName, "欧阳雨"));
  53. System.out.println("影响记录数:" + effectNum);
  54. }

AR模式

GitHub地址:https://github.com/tyronczt/java-learn/blob/master/Tools/mybatis-plus/src/test/java/com/tyron/mp/ARModelTest.java

  1. /**
  2. * AR 模式新增记录
  3. * 需要在User类中继承Model<User>
  4. *
  5. * ==> Preparing: INSERT INTO user ( id, create_time, name, manager_id, age ) VALUES ( ?, ?, ?, ?, ? )
  6. * ==> Parameters: 1259474874313797634(Long), 2020-05-10T21:26:24.419(LocalDateTime), 哈哈哈(String), 1088248166370832385(Long), 29(Integer)
  7. * <== Updates: 1
  8. */
  9. @Test
  10. public void insert() {
  11. User user = new User();
  12. user.setName("哈哈哈");
  13. user.setAge(29);
  14. user.setCreateTime(LocalDateTime.now());
  15. user.setManagerId(1088248166370832385L);
  16. boolean ifInsert = user.insert();
  17. Assert.assertEquals(true, ifInsert);
  18. }
  19. /**
  20. * ==> Preparing: SELECT id,create_time,name,manager_id,email,age FROM user WHERE id=?
  21. * ==> Parameters: 1259474874313797634(Long)
  22. * <== Columns: id, create_time, name, manager_id, email, age
  23. * <== Row: 1259474874313797634, 2020-05-10 11:26:24, 哈哈哈, 1088248166370832385, null, 29
  24. * <== Total: 1
  25. * User(id=1259474874313797634, name=哈哈哈, age=29, email=null, managerId=1088248166370832385, createTime=2020-05-10T11:26:24)
  26. * false
  27. */
  28. @Test
  29. public void selectById() {
  30. User user = new User();
  31. user.setId(1259474874313797634L);
  32. User selectUser = user.selectById();
  33. System.out.println(selectUser);
  34. System.out.println(user == selectUser);
  35. }
  36. /**
  37. * ==> Preparing: UPDATE user SET age=? WHERE id=?
  38. * ==> Parameters: 30(Integer), 1259474874313797634(Long)
  39. * <== Updates: 1
  40. * true
  41. */
  42. @Test
  43. public void updateById() {
  44. User user = new User();
  45. user.setId(1259474874313797634L);
  46. user.setAge(30);
  47. boolean ifUpdate = user.updateById();
  48. System.out.println(ifUpdate);
  49. }
  50. /**
  51. * ==> Preparing: DELETE FROM user WHERE id=?
  52. * ==> Parameters: 1259474874313797634(Long)
  53. * <== Updates: 1
  54. * true
  55. */
  56. @Test
  57. public void deleteById() {
  58. User user = new User();
  59. user.setId(1259474874313797634L);
  60. boolean ifDelete = user.deleteById();
  61. System.out.println(ifDelete);
  62. }

服务类接口

GitHub:https://github.com/tyronczt/java-learn/blob/master/Tools/mybatis-plus/src/test/java/com/tyron/mp/ServiceTest.java

服务接口需要继承IService,形如:extends IService

服务接口实现类需要继承ServiceImpl,形如:extends ServiceImpl

  1. /**
  2. * 批量保存
  3. *
  4. * ==> Preparing: INSERT INTO user ( id, name, age ) VALUES ( ?, ?, ? )
  5. * ==> Parameters: 1259497162086076417(Long), 张华(String), 33(Integer)
  6. * ==> Parameters: 1259497162241265666(Long), 岳华(String), 32(Integer)
  7. * true
  8. */
  9. @Test
  10. public void saveBatch() {
  11. User user1 = new User();
  12. user1.setName("张华");
  13. user1.setAge(33);
  14. User user2 = new User();
  15. user2.setName("岳华");
  16. user2.setAge(32);
  17. List<User> userList = Arrays.asList(user1, user2);
  18. boolean saveBatch = userService.saveBatch(userList);
  19. System.out.println(saveBatch);
  20. }
  21. /**
  22. * 批量保存或更新
  23. *
  24. * ==> Preparing: INSERT INTO user ( id, name, age ) VALUES ( ?, ?, ? )
  25. * ==> Parameters: 1259497692317458433(Long), 张华(String), 31(Integer)
  26. * ==> Preparing: SELECT id,create_time,name,manager_id,email,age FROM user WHERE id=?
  27. * ==> Parameters: 1259497162241265666(Long)
  28. * <== Columns: id, create_time, name, manager_id, email, age
  29. * <== Row: 1259497162241265666, null, 岳华, null, null, 32
  30. * <== Total: 1
  31. * ==> Preparing: UPDATE user SET name=?, age=? WHERE id=?
  32. * ==> Parameters: 岳华花(String), 30(Integer), 1259497162241265666(Long)
  33. * true
  34. */
  35. @Test
  36. public void saveOrUpdateBatch() {
  37. User user1 = new User();
  38. user1.setName("张华");
  39. user1.setAge(31);
  40. User user2 = new User();
  41. user2.setId(1259497162241265666L);
  42. user2.setName("岳华花");
  43. user2.setAge(30);
  44. List<User> userList = Arrays.asList(user1, user2);
  45. boolean saveBatch = userService.saveOrUpdateBatch(userList);
  46. System.out.println(saveBatch);
  47. }
  48. /**
  49. * Expected one result (or null) to be returned by selectOne(), but found: 2
  50. * 增加false参数
  51. *
  52. * ==> Preparing: SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name LIKE ?)
  53. * ==> Parameters: %雨%(String)
  54. * <== Columns: id, create_time, name, manager_id, email, age
  55. * <== Row: 1094590409767661570, 2019-01-14 09:15:15, 张雨琪, 1088248166370832385, zjq@baomidou.com, 32
  56. * <== Row: 1094592041087729666, 2019-01-14 09:48:16, 刘红雨, 1088248166370832385, lhm@baomidou.com, 32
  57. * <== Total: 2
  58. * Warn: execute Method There are 2 results.
  59. * User(id=1094590409767661570, name=张雨琪, age=32, email=zjq@baomidou.com, managerId=1088248166370832385, createTime=2019-01-14T09:15:15)
  60. */
  61. @Test
  62. public void selectOne() {
  63. User user = userService.getOne(new QueryWrapper<User>().lambda().like(User::getName, "雨"), false);
  64. System.out.println(user);
  65. }
  66. /**
  67. * selectList
  68. *
  69. * ==> Preparing: SELECT id,create_time,name,manager_id,email,age FROM user WHERE (name LIKE ?)
  70. * ==> Parameters: %雨%(String)
  71. * <== Columns: id, create_time, name, manager_id, email, age
  72. * <== Row: 1094590409767661570, 2019-01-14 09:15:15, 张雨琪, 1088248166370832385, zjq@baomidou.com, 32
  73. * <== Row: 1094592041087729666, 2019-01-14 09:48:16, 刘红雨, 1088248166370832385, lhm@baomidou.com, 32
  74. * <== Total: 2
  75. * User(id=1094590409767661570, name=张雨琪, age=32, email=zjq@baomidou.com, managerId=1088248166370832385, createTime=2019-01-14T09:15:15)
  76. * User(id=1094592041087729666, name=刘红雨, age=32, email=lhm@baomidou.com, managerId=1088248166370832385, createTime=2019-01-14T09:48:16)
  77. */
  78. @Test
  79. public void selectList() {
  80. List<User> users = userService.lambdaQuery().like(User::getName, "雨").list();
  81. users.forEach(System.out::println);
  82. }
  83. /**
  84. *按条件更新记录
  85. * ==> Preparing: UPDATE user SET age=? WHERE (name LIKE ?)
  86. * ==> Parameters: 28(Integer), %雨%(String)
  87. * <== Updates: 2
  88. * true
  89. */
  90. @Test
  91. public void updateByWapper() {
  92. boolean update = userService.lambdaUpdate().like(User::getName, "雨").set(User::getAge, 28).update();
  93. System.out.println(update);
  94. }
  95. /**
  96. * 按条件删除记录
  97. * ==> Preparing: DELETE FROM user WHERE (name LIKE ?)
  98. * ==> Parameters: %华%(String)
  99. * <== Updates: 3
  100. * true
  101. */
  102. @Test
  103. public void remove() {
  104. boolean remove = userService.lambdaUpdate().like(User::getName, "华").remove();
  105. System.out.println(remove);
  106. }

MyBatis-Plus 的进阶:https://blog.csdn.net/tian330726/article/details/106740025

发表评论

表情:
评论列表 (有 0 条评论,63人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MybatisPlus入门

    MyBatisPlus简介 1.项目肯定要访问数据操作,并且每个domain都有crud,需多次写重复代码。我们使用MybatisPlus,就不用写重复代码,并且还有模板