MybatisPlus学习2
问题:什么是MybatisPlus?为什么需要使用MybatisPlus?MybatisPlus如何使用?
–解答:MybatisPlus是基于Mybatis而开发的一个持久层框架,在Mybatis中能够完成的操作在MybatisPlus中都能够完成,MybatisPlus的口号是“只做增强,不做修改”。
–解答:相较于Mybatis,使用MybatisPlus更加方便,比如在MybatisPlus中提供了一个BaseMapper接口,在这个接口中提供了基本的CRUD操作,我们不需要在mapper.xml文件中编写SQL语句。
–解答:使用方法非常简单,详细教程可以参考mybatisplus官网
问题:在MybatisPlus中如何自定义SQL语句?
解答:刚才提到BaseMapper接口中提供大量基础的CRUD操作,如果想要编写自定义SQL语句,就需要像在Mybatis中一样,需要在Xxxmapper.xml文件中进行。具体步骤为:
- 需要在yaml文件中给mybatis-plus的mapper-locations属性进行配置,该属性有一个默认值,如图所示。表示默认情况下我们需要在类路径的mapper目录中创建XxxMapper.xml文件
- 在Mapper接口中定义相关方法,并在XxxMapper.xml文件中编写SQL语句
1 |
|
- 之后,我们就能使用自定义的sql查询语句了
问题:为什么不让我们的Service类直接继承ServiceImpl类?
–解答:在MybatisPlus中除了提供BaseMapper接口供持久层使用外,还提供了IService接口给Service层使用。该接口中也提供了大量基础的CRUD操作,并且提供了该接口的实现类ServiceImpl。理论上是可以让我们的Service类直接继承ServiceImpl类,但是这样做不利于面向接口编程。我们的接口中并没有这些方法,因此接口引用就无法使用这些方法。所以通常我们会让接口类继承IService接口,Service类继承ServiceImpl接口(避免重写IService中所有方法)
1 | public interface UserService extends IService<User>{ |
1 |
|
MybatisPlus有哪些常用注解?
–解答:在MybatisPlus中提供了很多注解,其中比较常用的有
@TableName:作用于实体类上。用于标识该实体类对应的数据库表
@TableId:用于于属性上。用于标识该属性是主键。该注解有两个属性:value:用于保证数据库表字段名和类属性名一致;type:指定主键生成方式,默认按照雪花算法生成
@TableField:作用于属性上。用于保证数据库字段名和类属性名一致
@TableLogic:作用于属性上。用于逻辑删除,当执行delete语句时,实际上执行的是update语句,会修改被该注解作用的属性的值为1(0表示未删除,1表示逻辑删除)。当执行select语句时,只会显示标志位为0的表项。