传播网站建设,wordpress完整教程下载,网站换空间要重新备案吗,网站建设架构图介绍
MyBatis-Plus是MyBatis的好朋友, 与MyBatis配合, 实现开发效率的提高 官网: 特点:
润物细无声: 只做增强不做改变, 引入它不会对现有工程产生影响, 如丝般顺滑效率自上: 只需简单配置, 即可快速进行单表CRUD, 从而节省大量时间功能丰富: 代码生产, 自动分页, 逻辑删除, …介绍
MyBatis-Plus是MyBatis的好朋友, 与MyBatis配合, 实现开发效率的提高 官网: 特点:
润物细无声: 只做增强不做改变, 引入它不会对现有工程产生影响, 如丝般顺滑效率自上: 只需简单配置, 即可快速进行单表CRUD, 从而节省大量时间功能丰富: 代码生产, 自动分页, 逻辑删除, 自动填充等功能一应俱全
单表CRUD
需求: 基于资料中的项目, 实现以下功能
新增用户根据id查询用户根据id更新用户根据id批量查询用户根据id删除用户 准备工作 打开工程: mp-demo修改配置: 修改数据库的连接信息建库建表: 执行资料中的sql 使用MP的步骤
引入依赖 dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.3.1/version/dependency
MyBatisPlus官方提供了starter, 其中集成了MyBatis和MyBatisPlus的所有功能, 并且实现了自动装配效果因此, 我们可以用MyBatisPlus的starter代替Mybatis的的starter 继承接口
public interface UserMapper extends BaseMapperUser {
}
自定义的Mapper继承MyBatisPlus提供的BaseMapper接口自定义的Mapper中看似什么代码都没有, 但是已经继承了强大的CRUD方法注意要把数据表对应的实体类作为泛型传递给BaseMapper接口, 这样MP才知道CRUD要操作哪个实体 直接调用继承的增删改查的方法 SpringBootTest
class UserMapperTest {Autowiredprivate UserMapper userMapper;Testvoid 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);}Testvoid testSelectById() {User user userMapper.selectById(5L);System.out.println(user user);}Testvoid testQueryByIds() {ListUser users userMapper.selectBatchIds(List.of(1L, 2L, 3L, 4L));users.forEach(System.out::println);}Testvoid testUpdateById() {User user new User();user.setId(5L);user.setBalance(20000);userMapper.updateById(user);}Testvoid testDeleteUser() {userMapper.deleteById(5L);}}
原理
MyBatis-Plus是通过扫描实体类, 并基于反射获取实体类信息作为数据库表信息, 生成CRUD方法 符合以下约定, MyBatisPlus就可以正确的获取到数据库表的信息, 然后进行增删改查操作
类名驼峰转下划线作为表名, 例如 类名 tbUser - 表名 tb_user名为id的字段作为主键, 如果没有id字段运行会报错变量名驼峰转下划线作为表的字段名
常用注解
大多数情况下, 数据表的设计和实体类是符合MyBatisPlus开发约定的, 特殊情况下需要通过注解解决特定问题 指定表名: 数据表与实体类的名称不一致时, 通过TableName注解, 指定表名
Data
TableName(value tb_user)
public class User {... ...
} 指定主键: 数据表中主键名不是id时, MP运行就会报错, 需要通过TableId注解, 指定表中的主键字段
Data
public class User {/*** 用户id*/TableId(valueid, typeIdType.AUTO)private Long idNumber;}
参数说明:
value用来指定主键字段名type用来指定主键类型
IdType枚举:
AUTO: 数据库自增长INPUT: 通过set方法自行输入ASSIGN_ID: 分配基于雪花算法的ID (默认)
如果数据表中指定id是自增长, 那么使用MP时, 一定要给id字段设置类型为AUTO, 因为默认是雪花算法 指定字段: 当实体类的变量名存在特殊情况时, 使用TableField注解, 处理表中的字段
Data
public class User {//用户名//1.成员变量名与数据库字段名不一致TableField(username)private String name;//状态1正常 2冻结//2.成员变量名以 is 开头, 且是布尔值//如果变量以is开头且是布尔值, MP编译时会去掉is, 造成变量名与字段名不一致,所以需要手动处理TableField(is_status)private Boolean isStatus;//排序//3.成员变量名与数据库关键字冲突TableField(order)private Integer order;//地址//4.成员变量名不是数据库字段TableField(existfalse)private String address;
}
常用配置
MyBatisPlus的配置项继承了MyBatis原生配置和一些自己的配置, 更多的配置可以去官网查看 官网: MyBatis-Plus 为简化开发而生大多情况下默认的配置就足够用了, 如果有需要再修改配置就可以了
小结
MyBatisPlus使用的基本流程
引入起步依赖自定义Mapper继承BaseMapper如果实体类和数据表信息对应关系有问题, 在实体类上添加注解指定表信息在application.yml中根据需要调整或添加配置