MybatisPlus(持续更新)
Mybatis-Plus
MyBatis-Plus 是基于 MyBatis 的增强工具,提供了便捷的 CRUD 操作、条件构造器、分页查询、自动填充、乐观锁、逻辑删除等功能,极大地简化了 MyBatis 的开发流程,提高了开发效率。
快速入门mybatisplus
1.引入mybatis-plus的起步依赖代替mybatis
1 | <dependency> |
mybatis-plus官方提供了starter,集成了mybatis和plus的所有功能,并且实现了自动装配的效果
2.自定义的mapper接口,继承mybatisplus提供的BaseMapper接口,并且指定泛型
3.直接注入mapper对象,用对象.调用父类BaseMapper中的方法,免去我们以前在mybatis中写SQL的步骤了
实现原理
1 | public interface UserMapper extends BaseMapper<User> |
mp通过扫描实体类,并基于反射作为实体类的信息作为数据库的信息表
1 |
|
- 类名驼峰转下划线作为表名称
- 名为id的字段作为表的主键
- 变量名驼峰转下换线作为表的字段名称
常见注解
mybatis中的常见注解如下:
- @TableName:用来指定表名称
- @TableId:用来指定表中主键字段的信息
- @TableField:用来指定表中普通字段的信息
解释如下:
1 |
|
这些注解用于映射 Java 对象与数据库表之间的关系,具体解释如下:
@TableName("tb_user")
: 用于指定该实体类对应的数据库表名为 “tb_user”。@TableId(value = "id", type = IdType.AUTO)
: 标注在实体类的主键字段上,用于指定主键属性,value
指定数据库表中对应的列名为 “id”,type
指定主键生成策略为自动增长。@TableField("username")
: 用于指定实体类属性与数据库表字段之间的映射关系,value
指定数据库表中对应的列名为 “username”。@TableField("is_married")
: 用于指定实体类属性与数据库表字段之间的映射关系,value
指定数据库表中对应的列名为 “is_married”,通常用于 boolean 类型的属性。@TableField("
order")
: 用于指定实体类属性与数据库表字段之间的映射关系,由于 “order” 是 SQL 关键字,所以使用了 “`” 来包裹列名。@TableField(exist = false)
: 标注在实体类的非数据库字段上,表示该属性在数据库表中不存在,即不与数据库表字段进行映射。
这些注解可以帮助 MyBatis-Plus 框架自动生成 SQL 语句,并实现对象与数据库表之间的映射关系,简化了持久层操作的开发。
常见配置
mybatis-plus:
type-aliases-package: com.itheima.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 # 更新策略:只更新非空字段
去官网查看
使用配置 | MyBatis-Plus (baomidou.com)
总结
MybatisPlus使用的基本流程
- 引入起步依赖
- 自定义mapper基础BaseMapper
- (约定大于配置,遵从约定上述)
- 在实体类上,添加注解声明,表示信息
- 在.yaml中根据需要添加配置