文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

IService接口和ServiceImpl实现类(Mybatis-Plus对service层的封装)

2023-08-17 08:08

关注

Java知识点总结:想看的可以从这里进入

3.2、IService接口

BaseMapper 是用在Mapper中,而IService是在Service层使用的封装接口,它进一步封装 CRUD 。为了和BaseMapper 中方法进行区分,它采用了不同的前缀:

  1. get 查询单行
  2. remove 删除
  3. list 查询集合
  4. page 分页
  5. save新增
  6. update修改

IService还有一个实现的类ServiceImpl,在使用使用时分别对应service接口和impl实现类。

public interface UserService extends IService {}
@Servicepublic class UserServiceImpl extends ServiceImpl implements UserService {}

3.2.1、新增

image-20230306112657281
  1. 新增一条记录

    @Resourceprivate UserService userService;@Testpublic void testServcie(){    User user  = new User();    user.setUsername("service增加");    user.setPassword("12321");    boolean save = userService.save(user);    System.out.println("是否成功:"+save);}
    image-20230306113912564
  2. 批量操作

    @Resourceprivate UserService userService;@Testpublic void testServcie(){    List users = new ArrayList<>();    User user1 = new User("批量增加1","123");    users.add(user1);    User user2 = new User("批量增加2","123");    users.add(user2);    User user3 = new User("批量增加3","123");    users.add(user3);    User user4 = new User("批量增加4","123");    users.add(user4);    User user5 = new User("批量增加5","123");    users.add(user5);    boolean save = userService.saveBatch(users);    System.out.println("是否成功:"+save);}
    image-20230306114731705
  3. 设置批次数量

    public void testServcie(){    List users = new ArrayList<>();    User user1 = new User("指定数量批量增加6","123");    users.add(user1);    User user2 = new User("指定数量批量增加7","123");    users.add(user2);    User user3 = new User("指定数量批量增加8","123");    users.add(user3);    User user4 = new User("指定数量批量增加9","123");    users.add(user4);    User user5 = new User("指定数量批量增加10","123");    users.add(user5);    boolean save = userService.saveBatch(users,2);    System.out.println("是否成功:"+save);}

    image-20230306114954565

3.2.2、查询

1、单行查询

image-20230306123815377

  1. 根据id查询

    @Testpublic void testServcie(){    User user = userService.getById(1);    System.out.println(user);}

    image-20230306124359229

2、多行查询

image-20230306125349084

  1. 根据ID批量查询

    @Testpublic void testServcie(){    List list = Arrays.asList(1, 2, 3);    List users = userService.listByIds(list);    users.forEach(System.out::println);}

    image-20230306124647126

  2. 查询所有

    @Testpublic void testServcie(){    //返回list List list = userService.list();    System.out.println(list);    //返回map    List> maps = userService.listMaps();    System.out.println(maps);    List objects = userService.listObjs();    System.out.println(objects);} 

    image-20230306125554522

    3.2.3、删除

    image-20230306115936178

    1. 根据id删除

      @Testpublic void testServcie(){    boolean b = userService.removeById(21);}
      image-20230306120252382
    2. 根据实体的id删除

      @Testpublic void testServcie(){    User user = userService.getById(22);    boolean b = userService.removeById(user);}
      image-20230306120455791
    3. 批量删除

      @Testpublic void testServcie(){    List list = Arrays.asList(23, 24, 25);    boolean b = userService.removeByIds(list);}
      image-20230306120634151
    4. 根据Map条件删除

      @Testpublic void testServcie(){    Map map = new HashMap<>();    map.put("username","批量增加5");    map.put("password","123");    boolean b = userService.removeByMap(map);}
      image-20230306120900709

    3.2.4、修改

    image-20230306121504141

    1. 根据ID修改

      @Testpublic void testServcie(){    User user = userService.getById(27);    user.setUsername("修改1");    user.setPassword("213123");    boolean b = userService.updateById(user);}
      image-20230306121740680
    2. 批量修改

      @Testpublic void testServcie(){    List list = Arrays.asList(28, 29, 30);    List users = userService.listByIds(list);    users.forEach(user -> {        user.setUsername("批量修改");    });    boolean b = userService.updateBatchById(users);}
      image-20230306122251212

    3.2.5、修改或更新

    image-20230306115225586

    3.2.6、分页

    image-20230306125813443

    在Mybatis-plus中提供了有关分页的接口和实现类 IPage 和 Page

    public class Page implements IPage {    private static final long serialVersionUID = 8545996863226528798L;    //用来存放查询出来的数据    protected List records = Collections.emptyList();    //返回的数据总数    protected long total = 0;    // 每页显示条数,默认 10    protected long size = 10;    //当前页,默认1    protected long current = 1;    // 排序字段信息    @Setter    protected List orders = new ArrayList<>();    //自动优化 COUNT SQL    protected boolean optimizeCountSql = true;    // 是否进行 count 查询    protected boolean searchCount = true;      public Page() {    }        public Page(long current, long size) {        this(current, size, 0);    }    public Page(long current, long size, long total) {        this(current, size, total, true);    }    public Page(long current, long size, boolean searchCount) {        this(current, size, 0, searchCount);    }    public Page(long current, long size, long total, boolean searchCount) {        if (current > 1) {            this.current = current;        }        this.size = size;        this.total = total;        this.searchCount = searchCount;    }    //是否存在上一页    public boolean hasPrevious() {        return this.current > 1;    }    //是否存在下一页    public boolean hasNext() {        return this.current < this.getPages();    }    ..........}
    • 配置

      • 使用Spring时,在Spring的配置文件中先配置mybatis-plus内置的分页插件

                                                                                                                
      • 使用SpringBoot时配置时,在配置类中配置

        @Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();    interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));    return interceptor;}
    • 分页查询数据

      @Testpublic void testServcie(){    Page page = userService.page(new Page<>(1,5));    System.out.println("总数据:"+page.getTotal());    List users = page.getRecords();    users.forEach(System.out::println);}

      image-20230306133721050

    3.2.7、查询记录数

    image-20230306133903188
    @Testpublic void testServcie(){    long count = userService.count();    System.out.println(count);}

    image-20230306134002194

    来源地址:https://blog.csdn.net/yuandfeng/article/details/129660661

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    软考中级精品资料免费领

    • 历年真题答案解析
    • 备考技巧名师总结
    • 高频考点精准押题
    • 资料下载
    • 历年真题
    • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

      难度     813人已做
      查看
    • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

      难度     354人已做
      查看
    • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

      难度     318人已做
      查看
    • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

      难度     435人已做
      查看
    • 2024年上半年系统架构设计师考试综合知识真题

      难度     224人已做
      查看

    相关文章

    发现更多好内容
    咦!没有更多了?去看看其它编程学习网 内容吧