一、创建工程
1. 创建springboot 项目:登录官网创建项目,springboot 版本和java版本参考如下图。
2.配置pom.xml
mysql 依赖的版本根据自己选择的mysql 版本进行选择,下图配置中的mysql 版本主要是适配mac 版本安装的mysql 版本。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
3. 创建数据库 & 表: user
4. 添加mysql 和 mybatis-plus 配置。具体添加文件:resources文件夹下的properties文件,也可以替换成yml 文件。
spring.profiles.active=dev
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus_test
spring.datasource.username=xxx
spring.datasource.password=xxxx
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
logging.level.com.lucifer.springboot.cache.mapper=debug
server.port=8080
mybatis-plus.mapper-locations=classpath:mapper/*.xml
logging.file.name=service.log
二、开始设计&coding
2.1 demo: 测试select
1. 首先创建表的实体类:
package com.example.demo.entity;
public class User {
private Long id;
private String name;
private String password;
private Integer age;
private String phone;
}
2.创建Dao 接口:注意添加@Mapper 注解,以便Dao接口可以被容器扫描到
package com.example.demo.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserDao extends BaseMapper<User> {
}
3.编写测试类
package com.example.demo;
import com.example.demo.dao.UserDao;
import com.example.demo.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class DemoApplicationTests {
@Autowired
private UserDao userDao;
@Test
void contextLoads() {
}
@Test
public void testGetAll(){
List<User> userList = userDao.selectList(null);
System.out.println(userList);
}
}
2.2 常用select 接口,参考官网
2.3 插入
@Test
public void testInsert(){
User user = new User();
user.setPassword("duedue22@@#");
user.setAge(13);
user.setName("E");
user.setPhone("123456");
userDao.insert(user);
}
insert 之后主键 过长
BaseMapper类中有很多基础的CRUD类型的方法可供使用,具体参考官网API.
2.4 分页查询
@Test
public void testSelectPage(){
IPage<User> page = new Page<>(1,2);
userDao.selectPage(page, null);
System.out.println("页数:" + page.getPages());
System.out.println("当前页:"+page.getCurrent());
System.out.println("每页大小:"+page.getSize());
System.out.println("record:"+page.getRecords());
}
上述分页功能不生效(可以通过命令行输出结果中的sql语句是否带limit 关键字),原因缺少如下的配置:
package com.example.demo.configuration;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
高级分页查询可以看官网的插件。
2.5 条件查询
通过QueryWrapper 来进行查询
@Test
public void testQueryWrapper(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age",10);
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}