MP介绍
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
说明: 使用MP将不会影响mybatis的使用.
MP特性
目录
MP介绍
MP特性
无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
Mybatis 特点
导入jar包:
说明: MP内部添加了mybatis的包,所以添加MP的包之后,应该删除原来的mybatis的包.
编辑POJO对象
.继承baseMapper
修改YML配置文件
MP工作原理实质: MP动态生成Sql语句.铺垫:1. insert into 表名(字段名…) value (属性值…)
Mp修改操作
无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
Mybatis 特点
- Mybaits 是一个半自动化的ORM映射框架
1.结果集可以实现自动化的映射. 自动
2.Sql语句需要自己手动完成. 手动
1.结果集可以实现自动化的映射. 自动
2.Sql语句需要自己手动完成. 手动
-
导入jar包:
-
说明: MP内部添加了mybatis的包,所以添加MP的包之后,应该删除原来的mybatis的包.
com.baomidou mybatis-plus-boot-starter3.4.3
编辑POJO对象
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@TableName("demo_user")
//对象与表一一对应 如果对象名和表名一致则表名可以省略
public class User implements Serializable {
@TableId(type = IdType.AUTO) //主键自增
private Integer id;
//@TableField(value = "name") //如果名称与属性一致则注解可以省略
private String name;
private Integer age;
private String sex;
}
.继承baseMapper
//注意事项: 继承时必须添加泛型
public interface UserMapper extends baseMapper {
List findAll();
}
//注意事项: 继承时必须添加泛型 public interface UserMapper extends baseMapper{ List findAll(); }
修改YML配置文件
MP入门案例测试
@Test
public void insertUser(){
User user = new User(null,"猴子",18, "男");
userMapper.insert(user);
System.out.println("新增入库成功!!!!");
}
MP工作原理
实质: MP动态生成Sql语句.
铺垫:
1. insert into 表名(字段名…) value (属性值…)
工作原理:
1. 用户执行userMapper.insert(user); 操作
2. 根据UserMapper的接口找到父级baseMapper.根据baseMapper的接口查找泛型对象User.
3. 根据User.class 获取注解@TableName(“demo_user”),获取表名
4. 根据User.class 获取所有的属性,根据属性获取指定的注解@TableField(value = “name”),获取字段名称
5. 根据属性获取属性的值.之后动态拼接成Sql语句
6. 将生成的Sql交给Mybatis执行入库操作.
1. insert into demo_user(id,name,age,sex) value (null,xx,xx,xx)
MP使用特点: 根据其中不为null的属性进行业务操作!!!
Mp修改操作
updateById()方法
1先通过id查寻到user
2。user.set() 给user设置新的属性
3.通过updateById()方法给user设置新的数值
//修改
@Test
public void testUpdateUser(){
User user= userMapper.selectById(1);
user.setName("首善大使");
userMapper.updateById(user);
}
update()方法



