侧边栏壁纸
博主头像
八月寻英 博主等级

大道至简,知易行难

  • 累计撰写 34 篇文章
  • 累计创建 13 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

重温Mybatis-plus框架

smy
smy
2024-12-21 / 0 评论 / 0 点赞 / 39 阅读 / 0 字 / 正在检测是否收录...

距离上次用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的影子,就好比注册中心eurekanacos等只是换汤不换药。

3.相关配置(官网链

mybatis-plus:
  type-aliases-package: com.project.entity # 别名扫描包
  mapper-locations: "classpath*:/mapper/**/*.xml"  # Mapper.xml 文件地址,默认值
  configuration:
    map-underscore-to-camel-case: true  # 是否开启下划线和驼峰的映射
    cache-enabled: false  # 是否开启二级缓存
  global-config:
    db-config:
      id-type: assign_id  # id 为雪花算法生成(优先级低于注解)
      update-strategy: not_null  # 更新策略: 只更新非空字段

4.复杂查询

如果仅是单表查询Jpa没话说是很强,但是涉及复杂查询要么在dao层写sql,要么使用视图层,或者用自带的方法(太难用了这个),还有引用DslQuery(虽然公司没用,这个可以操作对象达成和mybatis-plusLamdaQueryWrapper查询差不多的效果)。

0
  • 0

评论区