1.首先创建一个SpringBoot项目
创建一个SpringBoot项目,选择的配置如下:(服务器URL那里也需要修改一下)
如果是springboot 3.0+ 则需要jdk 8.0+
创建完成之后再创建包结构,在controller层里面创建一个UserController。
实现一个小小功能进行测试
填写代码,再点击运行
@Controller
public class UserController {
@RequestMapping("/param")
//不加就只能访问页面
@ResponseBody
public String param(String username){
return "hello"+username;
}
}
在浏览器输入框里输入?username=...
后端就可以接收前端传过来的参数
如果前后端的参数名不一致,比如前端输入的是name,但是后端里叫username,则需要加一条注解public String param(@RequestParam("name") String username){
2.添加mybatis-plus的依赖
在pom.xml里添加mybatis-plus和数据库的依赖,注意如果有mybatis的依赖就注释掉
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
放一下我的整个pom.xml以作参考
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hbnu</groupId>
<artifactId>SpringbootDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>SpringbootDemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.13</spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.mybatis.spring.boot</groupId>-->
<!-- <artifactId>mybatis-spring-boot-starter</artifactId>-->
<!-- <version>1.3.2</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- 引入热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<mainClass>com.hbnu.SpringbootDemoApplication</mainClass>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
3.配置application.yml文件
这里我修改了端口号为9080,添加了mybatis-plus的配置,注释掉了原有的mybatis配置
#1.配置层级结构 2.缩进 3.键与值之间有空格
server:
port: 9080
# servlet:
# context-path: /api
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/2110?serverTimezone=GMT&useSSL=false
username: root
password: 123456
thymeleaf:
prefix: classpath:/thymeleaf/
suffix: .html
#Mybatis Configuration
#mybatis:
# configuration:
# default-statement-timeout: 30 #sql execute timeout
# map-underscore-to-camel-case: true
# mapper-locations: classpath:/mapper/*.xml #必需:指定映射配置文件的路径
#logging:
# level:
# com.hbnu.dao:debug
#management:
# endpoints:
# web:
# exposure:
# include: ["*"]
mybatis-plus:
type-aliases-package: com.hbnu.pojo
mapper-locations: classpath:/mapper/*.xml
configuration:
map-underscore-to-camel-case: true
4.创建Student实体类和StudentMapper
在此之前,要在数据库里创建需要的表,我的表结构如下:
根据自己的表结构来创建实体类,注意id一定要有,并且设置自动递增。
我的Student实体类:
@Data
@Accessors(chain = true)
@TableName("student") //如果数据库表中的名称和实体类名称一致,则可以省略不写
public class Student {
@TableId(type = IdType.AUTO) //表明id和数据库表中的主键进行映射,type为自动递增
private Integer id;
@TableField("stuNo") //其他属性映射,当表中的字段名和实体类中的属性名一致,可以省略不写
private Integer stuNo;
private Integer age;
private String name;
}
StudentMapper:
直接继承BaseMapper,也不用像之前一样单独写方法了。
@Mapper
public interface StudentMapper extends BaseMapper<Student> {
}
5.使用mybatis-plus对数据库进行增删改查
创建一个mybatis-plus的测试类,将StudentMapper注入进来
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyBatisPlusTest {
@Autowired
private StudentMapper studentMapper;
}
注意:注解@Test
导入的包是import org.junit.Test;
,本人导错了包在所以第一次运行时失败了
查
查询所有学生
@Test
public void findAll(){
List<Student> students=studentMapper.selectList(null);
for (Student student : students) {
System.out.println(student);
}
}
增
添加一条学生记录
@Test
public void insertStudent(){
Student student = new Student();
student.setName("吱吱").setAge(20).setStuNo(1);
int row = studentMapper.insert(student);
System.out.println("影响了"+row+"条记录");
}
改
根据学生id修改一条学生记录
@Test
public void updateStudent(){
Student student = new Student();
student.setAge(19).setName("叽叽").setId(2);
int row = studentMapper.updateById(student);
System.out.println("影响了"+row+"条记录");
}
删
删除id为1的一条学生记录
@Test
public void deleteStudent(){
studentMapper.deleteById(1);
}
批量删除
//批量删除
List<Integer> idList=new ArrayList<>();
idList.add(1);
idList.add(2);
//如此就把集合里的两条数据删掉了
studentMapper.deleteBatchIds(idList);
6.使用QueryWrapper查询增加筛选条件
查询一个名字为“叽叽”的学生
@Test
public void selectOne(){
Student student = new Student();
student.setName("叽叽");
QueryWrapper<Student> queryWrapper = new QueryWrapper<>(student);
Student selectOne = studentMapper.selectOne(queryWrapper);
System.out.println(selectOne);
}
查询名字为“叽叽”或年龄是20的学生集合
@Test
public void selectOne2(){
QueryWrapper<Student> queryWrapper=new QueryWrapper<>();
//如果筛选条件是and,则去掉or()即可
queryWrapper.eq("name","叽叽").or().eq("age","20");
List<Student> students=studentMapper.selectList(queryWrapper);
for (Student student : students) {
System.out.println(student);
}
}
条件区间如 > gt < lt = eq >= ge <= le between
wrapper.between(“age”,18,24);