栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于mybatis-plus实现Iservice、ServiceImpl和BaseMaper的一些理解(个人学习用)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于mybatis-plus实现Iservice、ServiceImpl和BaseMaper的一些理解(个人学习用)

当我们实现BaseMapper的时候,MP就会帮我们把BaseMapper里的接口类全部实现代理,成为可以直接被我们调用的类,这个过程完全不需要我们去写xml,当然我们也可以在接口中写上我们自己自定义的类,但是我们自定义的类必须去写xml去映射方法,默认他会去扫描resources下的mapper文件夹下的xml,类名要于接口名一样哦这个和mybatis是一样的,其实唯一的区别就是有一些类他帮我们写了其他的和mybatis没有区别。

 

 接下来就是说IService接口和ServiceImpl,其实这两个类的存在也是很合理的,你想MP帮我们去实现了mapper接口,那mapper接口是不是得有Service接口和一个Service实现类啊?所以他其实帮我们连实现类也写好了,我们只需要去实现接口和继承实现类就好了。当然Service接口中我们也可以写自己的自定义方法但是同时我们也需要在ServiceImpl中自己去写我们自定义的方法,而从IService接口中实现的方法呢?ServiceImpl其实已经帮我们实现了,我们只要继承他就可以了。

 在多说两句,继承ServiceImpl要放入两个泛型呢,第一个其实是我们之前写的那个UserMapper,
为什么要传入这个呢,看下面的图:

 可以看到系统提供的这个ServiceImpl类中有一个成员变量,他被@Autowired注解修饰也就是说这个成员变量是自动注入的,可以发现他的名字叫baseMapper,懂了吧,我们那个UserMapper是继承自baseMapper的吧,所以我们把那个接口传进来,其实就是让这个实现类去自动注入我们的那个UserMapper.

第二个泛型是我们的那个model类,也就是User,我们告诉ServiceImpl我们要处理的User类,ServiceImpl再去调用UserMapper告诉Usermapper我要你处理的User,这说明什么呢,Usermapper的泛型和ServiceImpl的泛型要一致哦,不能说我Usermapper处理User类,然后你给ServiceImpl传入一个Student类,那到时候ServiceImpl传一个Student给UserMapper,UserMapper肯定就处理不了。可以看下图:

画红线的地方也看出来, ServiceImpl明确要求你这个泛型M必须继承的是一个泛型为T的BaseMapper,而T就是我们传入的第二个泛型,所以很明显Usermapper的泛型和ServiceImpl传入的第二个泛型是要一致的哦,一定要注意,虽然很基础但是往往也容易出错嘛.. 

如有高见,请多指教.....

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820460.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号