距离上次用Mybatis以及Mybatis-plus已经是两年前了,但都是培训时候用的,实际工作中主要还是用Jpa + Hibernate,别说Jpa真的很香,不用手动建表,需要加约束,索引什么的直接操作对象即可,永久了真的回不去了,但是对于复杂的查询还是比较吃力,相对于这点Mybatis还是挺不错的,当然主要还是跟上大部队的步伐,同时多学习别的东西未雨绸缪。
因为之前都是用的springboot2.x,这里我创建一个springboot3的项目作为demo尝尝鲜(jdk必须17起步),由于用喜欢了Jpa的自动建表,在用这种半自动框架还得手动建表,非常的不得劲所以我在网上扒拉了某佬一个好用的自动建表工具AUTO TABLE,感觉又回到了Jpa ,这样方便把精力放在业务上面,提升开发效率。
demo仓库地址,这个是我自己搭建的一个gitea仓库如果下载不下来证明被防火墙拦截了,可以下方评论联系 ^ ^。
由于是复习,下面以我个人习惯记录,对于记录不详细,理解不周到还请各位佬批评指导。
1.使用方法
1.1导入依赖
不同springboot版本对应的依赖是不同的,如果版本对应不上可能导致项目起不起来。
<!--Mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.7</version>
</dependency>
1.2接口继承Basemapper
这里和Jpa差不多都会继承这一个提供基本的增删改查接口
Jpa示例
public interface CourseDao extends JpaRepository<CourseEntity, String>, JpaSpecificationExecutor<CourseEntity> {
List<CourseEntity> findAllByOwnershipStoreIdAndDeleted(String storeId,Integer deleted);
List<CourseEntity> findAllByOwnershipStoreIdAndEnableAndDeleted(String storeId,Boolean enable,Integer deleted);
}
Mybatis-plus示例
@Mapper
public interface UserMapper extends BaseMapper<User> {
@Select("SELECT * FROM user WHERE phone = #{phone}")
User selectByPhone(String phone;
}
2.常用注解
@TableId
指定表中主键
@TableName(value = "table_name")
指定表名
@TableField(value = "column_name")
指定表中普通字段信息(如果是is开头的字段,一定要使用该注解指定,比如实体里面有个布尔类型
的字段IsTrue
如果不指定则其字段名,Mybatis-plus
会通过其反射机制处理成true
)
以上三个是Mybatis-plus
注解看了下除了注解字段有区别但是其作用于Jpa
都是一样的,下我放上jpa这三个注解对比
@Id
指定表中主键
@Table(name = "table_name"
) 指定表名
@Column(name = "column_name",length = 32)
指定表中普通字段信息
不难看出还是有Jpa的影子,就好比注册中心eureka
和nacos
等只是换汤不换药。
评论区