MyBatis-plus(一):快速入门

目录

一、MyBatis-plus 快速入门

1、原理

2、实体类命名规则

3、常见注解

4、主键 id 策略

5、使用 @TableField 的常见场景

6、常用配置

二、核心功能

1、条件构造器

2、自定义 SQL

3、IService 接口


一、MyBatis-plus 快速入门

1、原理

  • MyBatisPlus 通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。
  • 主要作用是定义 DAO 层的数据库操作方法,例如数据的增删改查等。基本使用示例:
    public interface xxxMapper extends BaseMapper<xxx实体类>{}

2、实体类命名规则

  • 类名使用驼峰命名,转变下划线的方式,作为表名。
  • 变量名使用驼峰命名,转变下划线的方式,作为字段名。
  • 固定以字段名为 id 的字段作为主键。

3、常见注解

  • 可以通过注解的方式,映射实体类和数据表的关系。
  • @TableName:用于指定表名。
  • @Tableld:用于指定表中的主键字段信息。
  • @TableField:用于指定表中的普通字段信息。

4、主键 id 策略

  • 主键在 MyBatis-plus 中称为 IdType, 可以通过注解的方式,设置不同的 id 策略。
  • ldType 枚举:
    • AUTO:主键自增。示例:@TableId(value=id, type=IdType.AUTO)
    • INPUT:通过 set 方法自行输入
    • ASSIGN_ID:分配 id,通过接口 IdentifierGenerator 的方法 nextld 生成 id,默认实现类使用 DefaultldentifierGenerator 雪花算法。

5、使用 @TableField 的常见场景

  • 成员变量名与数据库字段名不一致时。
  • 成员变量名以 is 开头,且为布尔值时。
  • 成员变量名与数据库关键字冲突时。示例:@TableField("`order`")
  • 成员变量不是数据库字段时。示例:@TableField(exist = false)

6、常用配置

  • MyBatisPlus 的配置项继承了 MyBatis 原生配置,同时也拥有一些自己特有的配置。
mybatis-plus:
    type-aliases-package: com.xxx.xxx  #别名扫描包,配置默认包名。
    mapper-locations: "classpath*:/mapper/**/*.xml"
    configuration: 
        map-underscore-to-camel-case: true  #是开启下划线和驼峰映射。
        cache-enabed: false  #是否开启二级缓存
    global-config: 
        db-config: 
            id-type: assign_id  #使用雪花算法生成 id。
            update-strategy: not_null  #更新策略:只更新非空字段.

二、核心功能

1、条件构造器

  • Querywrapper 和 LambdaQueryWrapper 通常用来构建 select、delete、update 的 where 条件部分。
  • Updatewrapper 和 LambdaUpdatewrapper 通常只有在 set 语句比较特殊才使用。
  • 尽量使用 LambdaQuerywrapper 和 LambdaUpdatewrapper 避免硬编码。

2、自定义 SQL

  • 可以利用 MyBatisPlus 的 Wrapper 构建复杂的 Where 条件,然后自己定义 SQL 语句中剩下的部分。
  • 基于 Wrapper 构建 where 条件。示例代码:
    List<Long> ids = List.of(1L,2L,3L);
    int amount = 200;
    
    LambdaQueryWrapper<User> wrapper = 
        new LambdaQueryWrapper<User>().in(User::getId,ids);
    
    userMapper.updateAmountByIds(wrapper, amount);
  • 在 mapper 方法参数中用 @Param 注解声明 wrapper 变量名称,必须是 Constants.WRAPPER 。示例代码:
    // UserMapper 接口中
    
    void updateAmountByIds(
        @Param(Constants.WRAPPER) QueryWrapper<User> wrapper, 
        @Param("amount") int amount);

  • 自定义SQL, 并使用 Wrapper 条件。示例代码:
    <update id="updateAmountByIds">
        UPDATE 数据表名 SET amount = 
            amount - #{amount} ${(Constants.WRAPPER).customSqlSegment}
    </update>

3、IService 接口

  • 使用 service 接口需要先构建以下继承体系:

  • 示例代码:
    // service 接口
    public interface IUserService extends IService<User> { }
    
    // service 实现类
    @Service
    public class UserServiceImpl 
        extends ServiceImpl<UserMapper, User> implements IUserService { }

  • IService 提供批量处理操作(IService 和 BaseMapper 需一起使用),BaseMapper 则没有。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值