详解SpringBoot整合MyBatis详细教程
前言
SpringBoot和MyBatis都是Java开发领域中非常流行的技术,它们分别解决了Web应用和数据访问两个方面的问题。在实际的开发中,我们通常需要将它们整合在一起,形成一个强大的系统。本文将详细讲解如何将SpringBoot和MyBatis整合在一起。
环境准备
在开始整合之前,我们需要准备以下环境:
- JDK 1.8或以上版本
- SpringBoot 2.x版本
- MyBatis 3.x版本
- MySQL数据库
本文以MySQL数据库为例,如果您使用的是其他类型的数据库,请自行调整相关的配置。
整合步骤
步骤一:创建SpringBoot项目
首先,我们需要创建一个SpringBoot项目,可以使用Maven或Gradle等构建工具快速创建。在创建完成后,我们需要添加以下的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
这些依赖分别是SpringBoot的Web模块、MyBatis的SpringBoot Starter和MySQL驱动包。我们还需要在application.properties中添加数据库配置信息:
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
在这里,我们配置了MySQL数据库的连接信息。
步骤二:创建数据表和实体类
接下来,我们需要在MySQL数据库中创建一张表和对应的实体类,用于测试MyBatis的CURD操作。在这里,我们创建一个student表,包含id、name和age三个字段,对应的实体类名为Student:
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
age INT NOT NULL
);
public class Student {
private Long id;
private String name;
private Integer age;
// 省略getter和setter
}
步骤三:编写MyBatis的Mapper接口和XML文件
在完成了实体类的定义之后,我们需要编写对应的Mapper接口和XML文件,用于向MyBatis提供CRUD操作的实现。这里我们创建一个StudentMapper接口和对应的student-mapper.xml文件,实现对Student实体类的增、删、改、查操作。
public interface StudentMapper {
void save(Student student);
void deleteById(Long id);
void updateById(Student student);
Student findById(Long id);
List<Student> findAll();
}
<mapper namespace="com.example.demo.mapper.StudentMapper">
<insert id="save" parameterType="com.example.demo.entity.Student">
insert into student(name, age) values(#{name}, #{age})
</insert>
<delete id="deleteById">
delete from student where id=#{id}
</delete>
<update id="updateById" parameterType="com.example.demo.entity.Student">
update student set name=#{name}, age=#{age} where id=#{id}
</update>
<select id="findById" parameterType="long" resultType="com.example.demo.entity.Student">
select * from student where id=#{id}
</select>
<select id="findAll" resultType="com.example.demo.entity.Student">
select * from student
</select>
</mapper>
步骤四:配置MyBatis的数据源和扫描路径
接下来,我们需要在application.properties中配置MyBatis的数据源和扫描路径:
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.demo.entity
这里,我们指定了Mapper接口的路径和实体类的包路径。
步骤五:启动应用程序,测试功能
经过以上的配置,我们现在就可以启动应用程序,并测试MyBatis的CURD操作是否正常了。以下是对StudentMapper的测试代码:
@SpringBootTest
class DemoApplicationTests {
@Autowired
private StudentMapper studentMapper;
@Test
void save() {
Student student = new Student();
student.setName("张三");
student.setAge(20);
studentMapper.save(student);
Assert.assertNotNull(student.getId());
}
@Test
void deleteById() {
Student student = new Student();
student.setName("张三");
student.setAge(20);
studentMapper.save(student);
studentMapper.deleteById(student.getId());
student = studentMapper.findById(student.getId());
Assert.assertNull(student);
}
@Test
void updateById() {
Student student = new Student();
student.setName("张三");
student.setAge(20);
studentMapper.save(student);
student.setName("李四");
student.setAge(30);
studentMapper.updateById(student);
student = studentMapper.findById(student.getId());
Assert.assertEquals("李四", student.getName());
Assert.assertEquals(30, student.getAge().intValue());
}
@Test
void findById() {
Student student = new Student();
student.setName("张三");
student.setAge(20);
studentMapper.save(student);
Student result = studentMapper.findById(student.getId());
Assert.assertNotNull(result);
Assert.assertEquals(student.getName(), result.getName());
Assert.assertEquals(student.getAge(), result.getAge());
}
@Test
void findAll() {
List<Student> students = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Student student = new Student();
student.setName("学生" + i);
student.setAge(20 + i);
studentMapper.save(student);
students.add(student);
}
List<Student> result = studentMapper.findAll();
Assert.assertEquals(10, result.size());
}
}
在这里,我们测试了StudentMapper中的增、删、改、查和查询所有数据的操作,确保整个流程的正确性。
总结
本文详细讲解了如何将SpringBoot和MyBatis进行整合,包括创建项目、配置数据源、编写Mapper文件等过程,同时还提供了对Student实体类的CRUD操作示例,帮助读者更好地理解SpringBoot和MyBatis的使用。希望可以帮助到您!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解SpringBoot整合MyBatis详细教程 - Python技术站