MP快速入门
- SpringBoot 整合 MyBatis-Plus,并==实现根据Id查询功能==
- 数据库环境准备
- 创建工程,引入场景依赖
```xml
org.springframework.boot spring-boot-starter-parent 2.3.10.RELEASE
- 编写DataSource相关配置```yaml# datasourcespring:datasource:url: jdbc:mysql://192.168.200.150:3306/mp?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driver#mybatis-plus配置控制台打印完整带参数SQL语句mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
编码
实体类
@TableName("tb_user") // 指定表名 @Data @NoArgsConstructor @AllArgsConstructor @Builde public class User { private Long id; private String userName; private String password; private String name; private Integer age; private String email; }@TableName(“tb_user”) : 如果数据库的表名和实体类一致时可以省略
编写mapper ```java /**
- 使用mp定义Mapper,需要让Mapper接口继承 BaseMapper接口。
*/
public interface UserMapper extends BaseMapper
{
- 使用mp定义Mapper,需要让Mapper接口继承 BaseMapper接口。
*/
public interface UserMapper extends BaseMapper
}
- 启动类增加 @MapperScan 注解
```java
@SpringBootApplication
@MapperScan("com.itheima.sh.mapper")
public class MpApplication {
public static void main(String[] args) {
SpringApplication.run(MpApplication.class, args);
}
}
MP实现常规增删改操作
插入操作
@Test public void testInsert() { User user = User.builder() .userName("itheima") .name("itcast") .age(15) .email("itcast@itcast.cn") .password("111111") .build(); int insert = userMapper.insert(user); System.out.println(insert); }注解@TableId介绍
@TableId注解作用: 1.标识实体类中主键对应属性; 2.定义主键生成策略; @TableId使用: 添加在实体类的主键对应的成员属性上即可;MP常用主键生成策略

MP实现更新操作
@Test public void testUpdateById() { User user = new User(); user.setId(2L); user.setPassword("1111111"); int count = userMapper.updateById(user); }MP实现查询操作
- MP实现分页查询
- 配置分页拦截器 ```java package com.itheima.sh.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;
- MP实现分页查询
/**
- @Description:
@Version: V1.0 */ @Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false // paginationInterceptor.setOverflow(false); // 设置最大单页限制数量,-1不受限制 paginationInterceptor.setMaxLimit(-1L); interceptor.addInnerInterceptor(paginationInterceptor); return interceptor;}
}
- 查询测试
```java
/**
* 分页查询:
* 1. 当前页码:currentPage
* 2. 每页显示条数:size
*
* 注意:使用mp的分页要设置一个拦截器!!!
*/
@Test
public void testSelectPage() {
int current = 1;//当前页码
int size = 2;//每页显示条数
IPage<User> page = new Page(current,size);
userMapper.selectPage(page,null);
List<User> records = page.getRecords();//当前页的数据
long pages = page.getPages();//总页数 2
long total = page.getTotal();//总记录数 4
System.out.println(records);
System.out.println(pages);
System.out.println(total);
}
QueryWrapper实现基础查询
QueryWrapper常用API
eq( ) : 等于 = ne( ) : 不等于 <> gt( ) : 大于 > ge( ) : 大于等于 >= lt( ) : 小于 < le( ) : 小于等于 <= between ( ) : BETWEEN 值1 AND 值2 notBetween ( ) : NOT BETWEEN 值1 AND 值2 in( ) : in notIn( ) :not inQueryWrapper模糊查询like
like("表列名","条件值"); 作用:查询包含关键字的信息,底层会自动添加匹配关键字,比如:%条件值% likeLeft("表列名","条件值"); 作用:左侧模糊搜索,也就是查询以指定条件值结尾的数据,比如:%条件值 likeRight("表列名","条件值");作用:右侧模糊搜索,也就是查询以指定条件值开头的数据,比如:条件值%代码演示
/** * 模糊查询 */ @Test public void testWrapper3(){ //1.创建查询条件构建器 QueryWrapper<User> wrapper = new QueryWrapper<>(); //2.设置条件 wrapper.likeLeft("user_name","zhang"); /* SELECT id,user_name,password,name,age,email from tb_user where user_name like ? %zhang */ List<User> users = userMapper.selectList(wrapper); System.out.println(users); }MP封装Service实现
定义服务扩展接口 ```java //在公共接口的基础上扩展 public interface UserService extends IService
{
}
定义服务实现
```java
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {}
