当前位置: 首页 > news >正文

[Mybatis-plus]

简介

        MyBatis-Plus (简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变。Mybatis-plus官网地址

        注意,在引入了mybatis-plus之后,不要再额外引入mybatis和mybatis-spring,避免因为版本差异导致的问题。

快速上手

1.导入依赖

根据自身环境的版本选择mybatis-plus版本:

springboot3.+和jdk17以上版本选择mybatis-plus-boot3-starter

<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot3-starter</artifactId><version>yourversion</version>
</dependency>

其他老版本选择mybatis-plus-boot-starter

<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-spring-boot3-starter -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot-starter</artifactId><version>yourversion</version>
</dependency>

2.编写配置:

jdbc连接配置(username、password、驱动)

Mybatis配置(连接池对象、映射文件所在包等)

编写配置的具体形式看自己使用的是spring还是springboot

3.编写实体类和mapper接口

        plus提供了一系列默认的sql方法,仅测试可以不用额外自己编写。

常用注解

        先看一个示范实体类:

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;@TableName("user")
public class MyUser {@TableId(value = "id", type = IdType.AUTO)private int id;@TableField("name")private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "MyUser{" +"id=" + id +", name='" + name + '\'' +'}';}
}

@TableName

        用于指定当前实体类对应数据库中哪张表

@TableId

        给属性绑定表中的主键,其中type属性是声明主键策略:

IdType.AUTO    数据库自增主键(需数据库支持,如 MySQL 的 AUTO_INCREMENT)

IdType.ASSIGN_ID    雪花算法生成 Long 类型主键(默认策略)

IdType.ASSIGN_UUID    UUID 生成字符串类型主键(需字段类型为 String)

IdType.INPUT    手动输入主键(需在代码中赋值)

IdType.NONE    无策略,依赖数据库默认行为

@TableField

        给属性绑定表中的列

        当然,上述是对应单表的时候。如果你的查询结果对应多张表中的数据,就不再能够用这三个注解了。

        我们在多表查询的语句中使用别名,mybatis会自动匹配查询结果和实体类的数据:

// DTO 类(无需继承任何基类)
public class UserOrderDTO {// 用户表字段private Long userId;private String userName;// 订单表字段private String orderId;private BigDecimal orderAmount;// 其他字段(如关联表的统计信息)private Integer totalOrders;// Getters & Setters
}
<!-- XML 中编写 SQL -->
<select id="selectUserOrders" resultType="com.example.dto.UserOrderDTO">SELECT u.id          AS userId,u.name        AS userName,o.order_id    AS orderId,o.amount      AS orderAmount,COUNT(o.id)   AS totalOrdersFROM user uLEFT JOIN order o ON u.id = o.user_idWHERE u.id = #{userId}GROUP BY u.id
</select>

条件构造器

        条件构造器的相关功能通过一系列Wrapper类实现。

下面是两组示范:

sql语句:select name,email from tb_user where address like 值1 and age>=值2;

QueryWrapper<User> queryWrapper = new QueryWrapper<User>();queryWrapper.select("name","email").like("address","a").gt("age","30");

sql语句:update tb_user set age = age+10 where uid in(1,3,5);

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();updateWrapper.setSql("age = age+10").in("uid", Arrays.asList(1,3,5));
http://www.xdnf.cn/news/132823.html

相关文章:

  • IEEE期刊目录重磅更新!共242本期刊被收录!
  • ubuntu22.04部署Snipe-IT
  • C++初登门槛
  • Unreal制作角色冲锋时冲击波效果
  • markdown自动标题序号,标题序号,目录处理
  • 待办事项日历组件实现
  • ViT论文及代码解读
  • synchronization
  • 八大排序——冒泡排序/归并排序
  • C++经典知识网页保存
  • 前端开发实用技巧:封装通用下载导出文件或图片方法
  • 2025年深度学习模型发展全景透视(基于前沿技术突破与开源生态演进的交叉分析)
  • 39个常用的AI指令,笔尖Ai写作、DeepSeek、腾讯元宝、豆包、Kimi等都能用
  • 制作一个简单的操作系统10
  • Android开发,实现底部弹出菜单
  • GStreamer 简明教程(十一):插件开发,以一个音频生成(Audio Source)插件为例
  • ‌Linux trap 命令详解
  • report builder问题
  • springboot3 声明式 HTTP 接口
  • JUC多线程:读写锁
  • 【高频考点精讲】前端构建工具对比:Webpack、Vite、Rollup和Parcel
  • 淘宝 /天猫/1688|京东API 常用接口列表与申请方式解析
  • P12167 [蓝桥杯 2025 省 C/Python A] 倒水
  • 对接金蝶获取接口授权代码
  • 第3讲、大模型如何理解和表示单词:词嵌入向量原理详解
  • Blender好用的插件推荐汇总
  • 电脑温度怎么看 查看CPU温度的方法
  • Golang | 位运算
  • DELPHI实现dbTreeView的节点拖动并更新
  • 为什么说美颜SDK动态贴纸才是直播、短视频平台的下一个爆点?看完你就懂了!