# 1.MP介绍
在mybatis上 只做增强不做改变 为提高效率而生
1.1 导包 + yml
pom
<!--MP内部已经加载了mybatis,所以无需再次添加jar包-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
yml
mybatis-plus:
#指定别名包
type-aliases-package: com.jt.pojo
#加载指定的xml映射文件
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
1.2 pojo
核心:实现对象关系映射
对象与数据库中标的映射关系
- 对象名称与表名一一映射 @TableName(“数据库中的名”)
- 对象的属性与表中的字段一一映射
2.1 @TbaleId(type = IdType.AUTO)主键自增
2.2 @TableField(“其他属性”) 与 数据库中的一一对应 --啰嗦
2.2.1 简便方法:语法规则:
如果数据库中的字段与表中的属性名称一致,可省略不写
哪个不一样 写哪个 @TableField(“其他属性”)
1.3 mp入门案例:用户入库操作
1.3.1 创建SpringbootSsmApplicationTests
//效果:只要@Test测试方法执行,则整个Spring容器启动,可以根据自身的需要实现依赖注入
//注意事项: 该注解只能在测试类中使用.
// 测试类的包路径必须在主启动类的同包及子包中编辑.
@SpringBootTest
class SpringbootSsmApplicationTests {
@Autowired
private UserMapper userMapper;
}
1.3.2 继承BaseMapper
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
1.3.3 测试用户入库
@SpringBootTest
class SpringbootSsmApplicationTests{
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
}
/*
* MP入门案例 */
@Test
public void insertUser(){
User user = new User();
user.setName("YY4mn").setAge(18).setSex("男").setId(null);
userMapper.insert(user);
System.out.println(user);
}
}
2. mybatisPlus工作原理
2.1 分析
核心:以对象的形式操作数据库
调用步骤:
1. 用户执行userMapper.insrt(user);
2. 根据继承的关系BaseMapper.insert(user);
3. MP是如何动态生成sql,交给mybatis调用,最后实现数据操作
4. 核心问题:MP如何动态生成sql语句
2.2 原理
- 调用接口方法
- 根据接口找到父级接口BaseMapper
- 根据父级接口动态获取当前接口的泛型对象T(通过反射)
- 由T找到当前接口的指定注解@TableName(“demo_user”),之后获取表名demo_user
- 由T找到当前接口的指定注解@TableField注解找到类型 --> 属性 --> 字段
- 根据sql拼接形成最后的sql语句
- MP将生成的sql交给Mybatis执行入库操作