一、入门案例
需求:基于课前资料提供的项目,实现下列功能:
- 新增用户功能
- 根据id查询用户
- 根据id批量查询用户
- 根据id更新用户
- 根据id删除用户
1.引入MybatisPlus的起步依赖
MybatisPlus官方提供的starter,其中集成了Mybatis和MybatisPlus的所有功能。实现自动装配效果。
<!--MybatisPlus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
2.自定义Mapper继承BaseMapper<T>接口
自定义Mapper继承MyBatisPlus提供的BaseMapper<T>接口
T泛型是操作的实体类的类型
public interface User2Mapper extends BaseMapper<User> {
}
BaseMapper里面定义了增删改查的方法
3.测试
@SpringBootTest
class UserMapperTest {
@Autowired
private User2Mapper user2Mapper;
@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());
user2Mapper.insert(user);
}
@Test
void testSelectById() {
User user = user2Mapper.selectById(5L);
System.out.println("user = " + user);
}
@Test
void testQueryByIds() {
List list = new ArrayList();
list.add(1L);
list.add(2L);
list.add(3L);
List<User> users = user2Mapper.selectBatchIds(list);
users.forEach(System.out::println);
}
@Test
void testUpdateById() {
User user = new User();
user.setId(5L);
user.setBalance(20000);
user2Mapper.updateById(user);
}
@Test
void testDeleteUser() {
user2Mapper.deleteById(5L);
}
}
二、常见注解
1.MybatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库表的信息
约定:
①类名驼峰转下划线作为表名
②名为id的字段作为主键
③变量名驼峰转下划线作为表的字段名
2.MybatisPlus常用的注解(实体类跟数据库表不一致)
①@TableName:用来指定表名
②@TableId:指定表中的主键
③@TableField:指定表中字段
用户表信息如下
对应的User配置类
3.@TableId的type总结
@TableId(value=”id”,type=IdType.AUTO)
①IdType.AUTO:id自增
②IdType.INPUT:id通过set方法自行输入
③IdType.ASSIGN_ID:随机ID,雪花算法
4.使用@TableField的常见场景
①成员变量名跟数据库字段名不一致
②成员变量名是is开头,布尔值(因为mp会把is去掉)
③成员变量名跟数据库关键字冲突
④成员变量不是数据库字段exist=false
三、常用配置
1.MyBatisPlus继承MyBatis的原生配置
①type-aliases-package别名扫描包:PO实体类的包
②mapper-locations扫描mapper.xml文件的
③map-underscore-to-camel-case下划线转驼峰的映射
2. MyBatisPlus使用的基本流程是什么?
①引入起步依赖
②自定义Mapper继承BaseMapper
③在实体类上添加注解声明表信息
④在application.yml根据需要添加配置