MyBatisPlus-CRUD

前端之家收集整理的这篇文章主要介绍了MyBatisPlus-CRUD前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、查询@H_403_1@

还是基于上面的程序

  1. package com.md;
  2. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  3. import com.md.entity.Student;
  4. import com.md.mapper.StudentMapper;
  5. import org.junit.jupiter.api.Test;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.boot.test.context.SpringBootTest;
  8. import java.util.List;
  9. @SpringBootTest
  10. class ApplicationTests {
  11. @Autowired
  12. private StudentMapper mapper;
  13. @Test
  14. void contextLoads() {
  15. // 不加条件全部查询,把每个对象迭代出来
  16. mapper.selectList(null).forEach(System.out::println);
  17. }

1、常用操作

  1. // 查询全部
  2. //mapper.selectList(null);
  3. // 条件查询
  4. QueryWrapper wrapper = new QueryWrapper();
  5. // Map<String,Object> map = new HashMap<>();
  6. // map.put("name","小红");
  7. // map.put("age",3);
  8. // 多个条件查询
  9. // wrapper.allEq(map);
  10. // 年龄大于20的
  11. // wrapper.gt("age",20);
  12. // 名字不是小红的
  13. // wrapper.ne("name","小红");
  14. // 大于等于
  15. // wrapper.ge("age",20);
  16. //like '%小'
  17. // wrapper.likeLeft("name","小");
  18. //like '小%'
  19. // wrapper.likeRight("name","小");
  20. //insql,这两个同时作为条件
  21. // wrapper.insql("id","select id from user where id < 10");
  22. // wrapper.insql("age","select age from user where age > 20");
  23. // 排序
  24. // wrapper.orderByDesc("age");
  25. // 升序的同时id大于8
  26. // wrapper.orderByAsc("age");
  27. // wrapper.having("id > 8");
  28. mapper.selectList(wrapper).forEach(System.out::println);

2、常用操作

  1. // 通过主键查询
  2. // System.out.println(mapper.selectById(7));
  3. // mapper.selectBatchIds(Arrays.asList(7,8,9)).forEach(System.out::println);
  4. //Map 只能做等值判断,逻辑判断需要使用 Wrapper 来处理
  5. // Map<String,Object> map = new HashMap<>();
  6. // map.put("id",7);
  7. // mapper.selectByMap(map).forEach(System.out::println);
  8. QueryWrapper wrapper = new QueryWrapper();
  9. wrapper.gt("id",7);
  10. //// System.out.println(mapper.selectCount(wrapper));
  11. //
  12. // //将查询的结果集封装到Map中,这个和下面返回的类型是不同
  13. // mapper.selectMaps(wrapper).forEach(System.out::println);
  14. // System.out.println("-------------------");
  15. // mapper.selectList(wrapper).forEach(System.out::println);
  16. //分页查询,在接口中完成的
  17. // 首先进行配置
  18. // Page<User> page = new Page<>(2,2);
  19. // Page<User> result = mapper.selectPage(page,null);
  20. // System.out.println(result.getSize());
  21. // System.out.println(result.getTotal());
  22. // result.getRecords().forEach(System.out::println);
  23. // 把结果封装为map集合
  24. // Page<Map<String,Object>> page = new Page<>(1,2);
  25. // mapper.selectMapsPage(page,null).getRecords().forEach(System.out::println);
  26. // 返回全部的主键
  27. // mapper.selectObjs(null).forEach(System.out::println);
  28. // 只能查询单条数据
  29. QueryWrapper wrapper = new QueryWrapper();
  30. wrapper.eq("id",7);
  31. System.out.println(mapper.selectOne(wrapper));

1. 自定义 sql(多表关联查询

通过sql语句

  1. import lombok.Data;
  2. @Data
  3. public class ProductVO {
  4. private Integer category;
  5. private Integer count;
  6. private String description;
  7. private Integer userId;
  8. private String userName;
  9. }
  1. import java.util.List;
  2. public interface UserMapper extends BaseMapper<User> {
  3. @Select("select p.*,u.name userName from product p,user u where p.user_id = u.id and u.id = #{id}")
  4. List<ProductVO> productList(Integer id);
  5. }

二、分页@H_403_1@

MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能

创建配置类

  1. @Configuration
  2. public class MyBatisPlusConfig {
  3. /**
  4. * 乐观锁
  5. */
  6. @Bean
  7. public OptimisticLockerInterceptor optimisticLockerInterceptor(){
  8. return new OptimisticLockerInterceptor();
  9. }
  10. /**
  11. * 逻辑删除
  12. */
  13. @Bean
  14. public IsqlInjector sqlInjector() {
  15. return new LogicsqlInjector();
  16. }
  17. /**
  18. * 分页插件
  19. */
  20. @Bean
  21. public PaginationInterceptor paginationInterceptor() {
  22. return new PaginationInterceptor();
  23. }
  24. }

测试selectPage分页

最终通过page对象获取相关数据

  1. @Test
  2. public void testSelectPage() {
  3. Page<User> page = new Page<>(1,5);
  4. userMapper.selectPage(page,null);
  5. page.getRecords().forEach(System.out::println);
  6. System.out.println(page.getCurrent());
  7. System.out.println(page.getPages());
  8. System.out.println(page.getSize());
  9. System.out.println(page.getTotal());
  10. System.out.println(page.hasNext());
  11. System.out.println(page.hasPrevIoUs());
  12. }

控制台sql语句打印:SELECT id,name,age,email,create_time,update_time FROM user LIMIT 0,5

测试selectMapsPage分页:结果集是Map

  1. @Test
  2. public void testSelectMapsPage() {
  3. Page<User> page = new Page<>(1,5);
  4. IPage<Map<String,Object>> mapIPage = userMapper.selectMapsPage(page,null);
  5. //注意:此行必须使用 mapIPage 获取记录列表,否则会有数据类型转换错误
  6. mapIPage.getRecords().forEach(System.out::println);
  7. System.out.println(page.getCurrent());
  8. System.out.println(page.getPages());
  9. System.out.println(page.getSize());
  10. System.out.println(page.getTotal());
  11. System.out.println(page.hasNext());
  12. System.out.println(page.hasPrevIoUs());
  13. }

三、添加@H_403_1@
  1. User user = new User();
  2. user.setTitle("小明");
  3. user.setAge(22);
  4. mapper.insert(user);
  5. System.out.println(user);

四、删除@H_403_1@
  1. // 根据主键删除
  2. //mapper.deleteById(1);
  3. // 删除多个
  4. // mapper.deleteBatchIds(Arrays.asList(7,8));
  5. // 有条件删除
  6. // QueryWrapper wrapper = new QueryWrapper();
  7. // wrapper.eq("age",14);
  8. // mapper.delete(wrapper);
  9. Map<String,Object> map = new HashMap<>();
  10. map.put("id",10);
  11. mapper.deleteByMap(map);

五、修改@H_403_1@
  1. // //update ... version = 3 where version = 2
  2. // User user = mapper.selectById(7);
  3. // user.setTitle("一号");
  4. //
  5. // //update ... version = 3 where version = 2
  6. // User user1 = mapper.selectById(7);
  7. // user1.setTitle("二号");
  8. //
  9. // mapper.updateById(user1);
  10. // mapper.updateById(user);
  11. User user = mapper.selectById(1);
  12. user.setTitle("小红");
  13. QueryWrapper wrapper = new QueryWrapper();
  14. wrapper.eq("age",22);
  15. mapper.update(user,wrapper);

猜你在找的Mybatis相关文章