MybatisPlus安装即使用快速上手

MybatisPlus安装及使用快速上手


前言

环境版本号
springboot 2.7.12
java 11

MyBatis-Plu 是MyBatis的增强工具,为MyBatis提供了一些增强特性,简化了数据库操作的开发。


使用步骤

1.步骤引入依赖

代码如下:由于这个starter包含对mybatis的⾃动装配,因此完全可以替换掉Mybatis的starter。


<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>

2.步骤定义Mapper

代码如下:Mapper要继承 BaseMapper,需要写上对应pojo的泛型,不再需要编写查询语句和方法

@Mapper
public interface UserMapper extends BaseMapper<User> {
}


3.步骤测试

代码如下:直接调用BaseMapper里面的增删改查方法

@SpringBootTest
class UserMapperTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    void testInsert() {
        User user = new User();
        user.setId(5L);
        user.setUsername("Lucy");
        user.setPassword("123");
        user.setPhone("18688990011");
        user.setBalance(200);
        user.setInfo("{\"age\": 24, \"intro\": \"英文老师\", \"gender\": \"female\"}");
        user.setCreateTime(LocalDateTime.now());
        user.setUpdateTime(LocalDateTime.now());
        userMapper.insert(user);
    }

    @Test
    void testSelectById() {
        User user = userMapper.selectById(5L);
        System.out.println("user = " + user);
    }

    //通过id批量查询
    @Test
    void testQueryByIds() {
        List<User> users = userMapper.selectBatchIds(List.of(1L, 2L, 3L, 4L));
        users.forEach(System.out::println);
    }

    @Test
    void testUpdateById() {
        User user = new User();
        user.setId(5L);
        user.setBalance(20000);
        userMapper.updateById(user);
    }

    @Test
    void testDeleteUser() {
        userMapper.deleteById(5L);
    }
}
}

4.注意事项及常用注解

MyBatis-Plus默认采用驼峰命名法映射Java对象的字段,而数据库表字段通常使用下划线命名法。因此,MyBatis-Plus会自动将Java对象字段的驼峰命名转换为数据库表字段的下划线命名。

例如:

Java对象字段:userName
数据库表字段:user_name
字段名和数据库列名一致:
如果Java对象的字段名和数据库表的字段名已经一致,MyBatis-Plus会直接使用它们之间的对应关系,无需转换。

例如:

Java对象字段:age
数据库表字段:age
在这种自动映射的情况下,MyBatis-Plus能够根据命名规则自动匹配Java对象的字段和数据库表的字段,无需额外的配置。

如果需要进行更复杂或特定的映射,可以通过注解进行配置。例如,使用@TableField注解标记Java对象字段和数据库表字段之间的映射关系,或者使用@TableId注解标记主键字段。

代码如下:

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

//用于标记Java对象和数据库表之间的映射关系。
@TableName("user_table")
public class User {
    
    //主键生成策略为自增长。
    //@TableId(value = "user_id", type = IdType.AUTO)
    //用于标记主键字段,可以指定数据库表字段名。
    @TableId("user_id")
    private Long userId;
    //布尔类型且是is开头也要标准,否则会识别成is后面的字段
    @TableField("is_married")
    private Boolean isMarried;
    //关键字冲突用转义字符``包裹
    @TableField("`order`")
    private Integer order;
    //数据库不存在字段标注
    @TableField(exist = false)
    private String address;
    //用于标记Java对象字段和数据库表字段之间的映射关系。
    @TableField("user_name")
    private String userName;
}

5.常见配置

代码如下:

mybatis-plus:
  type-aliases-package: com.dong.mp.domain.po #起别名,扫描包
  #以下为默认配置
  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 # 更新策略:只更新非空字段


6.条件构造器

Wrapper是MyBatis-Plus提供的条件构造器接口,用于构建查询、更新和删除的条件。它提供了一系列方法,允许开发者通过链式调用来构建复杂的WHERE条件。Wrapper接口位于com.baomidou.mybatisplus.core.conditions包中。

以下是一些常用的Wrapper接口的实现类:

QueryWrapper:
用于构建查询条件。

UpdateWrapper:
用于构建更新条件。

LambdaQueryWrapper:
使用Lambda表达式构建查询条件。

LambdaUpdateWrapper:
使用Lambda表达式构建更新条件。

这些Wrapper接口都提供了类似的方法,用于构建各种条件,例如:
eq(String column, Object val): 等于 =
ne(String column, Object val): 不等于 <>
gt(String column, Object val): 大于 >
ge(String column, Object val): 大于等于 >=
lt(String column, Object val): 小于 <
le(String column, Object val): 小于等于 <=
like(String column, Object val): 模糊查询 LIKE
in(String column, Collection<?> coll): 在集合中 IN notIn(String column, Collection<?> coll): 不在集合中 NOT IN
isNull(String column): 为NULL IS NULL
isNotNull(String column): 不为NULL IS NOT NULL
and(): AND关系
or(): OR关系
nested(Consumer<Param<?>> consumer): 嵌套条件
apply(String applySql, Object… value): 自定义SQL片段,如 apply(“age = {0} and name = {1}”, 18, “John”)

代码如下:

@Test
void testQueryWrapper() {
    // 1.构建查询条件(查询用户名包含字母"o"且账户余额大于等于1000的用户信息,并通过.select("id", "username", "info", "balance")指定查询的字段。)
    QueryWrapper<User> wrapper = new QueryWrapper<User>()
            .select("id", "username", "info", "balance")
            .like("username", "o")
            .ge("balance", 1000);

    // 2.查询
    List<User> userList = userMapper.selectList(wrapper);

    // 3.处理查询结果,例如打印或进行断言
    for (User user : userList) {
        System.out.println(user);
    }
   
}

总结

  • 简化CRUD操作:

提供了通用的Mapper接口,通过继承该接口,可以实现基础的增删改查操作,无需手动编写SQL语句。

  • Lambda查询:

引入Lambda表达式和条件构造器,使得查询条件的拼接更加直观、简洁,提高代码的可读性。

  • 自动填充:

支持在实体类中定义字段的填充策略,例如创建时间、更新时间等,在插入和更新时自动填充相应的字段。

  • 分页查询:

提供了方便的分页查询方法,简化了对分页的处理,支持多种分页插件。

  • 逻辑删除:

支持逻辑删除功能,通过在实体类中定义逻辑删除字段,删除时仅更新标记字段而非真正删除记录。

  • 性能分析:

集成了性能分析插件,可以方便地查看SQL执行性能,帮助进行性能优化。

  • 乐观锁:

提供了乐观锁的支持,通过在实体类中定义版本字段,实现对数据的乐观锁控制。

  • 代码生成器:

MyBatis-Plus内置了代码生成器,可以根据数据库表结构生成相应的实体类、Mapper接口等代码,加速开发过程。

  • 多租户支持:

提供了多租户的支持,方便在一个系统中处理多租户的数据隔离需求。

  • 缓存支持:

支持二级缓存,可以配置缓存策略提升查询性能。

  • 自定义SQL注入:

提供自定义SQL注入功能,可以在运行时动态注入SQL,满足复杂业务场景的需求。

  • 强大的条件构造器:

支持复杂的查询条件,包括嵌套条件、自定义SQL片段等。

  • 多种数据库支持:

对多种数据库(MySQL、Oracle、SQL Server等)提供了兼容性支持。

  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是行东啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值