SpringBoot集成Mybatis过程解析
1. 简介
SpringBoot是基于Spring框架的快速应用开发框架,整合了众多好用的组件,非常适合开发中小型项目。而Mybatis则是一个轻量级的ORM框架,可以让我们更加方便地操作数据库。
在本篇攻略中,我们将会详细讲解如何在SpringBoot项目中集成Mybatis,并完成对数据库的CRUD操作。
2. 准备工作
在开始之前,我们需要来准备一些必要的工具和环境。
2.1 环境要求
- JDK 1.8+
- Maven 3.2+
- SpringBoot 2.0+
- Mybatis 3.5+
2.2 工具准备
为了方便我们操作数据库,在本次攻略中,我们将会使用到Navicat Premium这个数据库管理工具。当然,如果你有其他熟悉的工具可以替代的话也是可以的。
3. 创建SpringBoot项目
首先,我们需要创建一个基于SpringBoot的Maven项目,可以通过以下命令在命令行中创建:
mvn archetype:generate -DgroupId=com.example -DartifactId=mybatis-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
4. 引入依赖
在我们创建的项目中,我们需要引入一些必要的依赖,包括SpringBoot和Mybatis。在pom.xml
中添加以下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
5. 数据库配置
在项目中,我们需要配置数据库连接信息,在application.properties
中添加以下配置:
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_demo?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
在这里,我们配置的是MySQL数据库,并将URL、用户名、密码等信息都写在了application.properties
中。
6. 创建实体类
我们的CRUD操作需要作用在某个实体类上,因此我们需要创建一个实体类表示数据库中的表。
在com.example.mybatisdemo
包下创建User.java
文件,包含以下代码:
public class User {
private Long id;
private String name;
private Integer age;
// 省略getter/setter方法
}
7. 创建Mapper
Mybatis的Mapper文件与业务代码分离,使得我们的代码更加清晰简洁。在这里,我们会使用Mybatis的注解来代替XML文件进行Mapper映射。
在com.example.mybatisdemo
包下创建UserMapper.java
文件,包含以下代码:
@Mapper
public interface UserMapper {
@Insert("insert into user(name, age) values(#{name}, #{age})")
int insert(User user);
@Select("select * from user where id=#{id}")
User selectByPrimaryKey(Long id);
@Update("update user set name=#{name}, age=#{age} where id=#{id}")
int updateByPrimaryKey(User user);
@Delete("delete from user where id=#{id}")
int deleteByPrimaryKey(Long id);
}
在这里,我们使用@Mapper
注解标注这个接口是一个Mapper,然后使用注解来声明各个方法对应的SQL语句。
8. 编写Service
在完成了实体类和Mapper的编写后,我们需要再创建一个Service来进行业务操作。
在com.example.mybatisdemo
包下创建UserService.java
文件,包含以下代码:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public int insert(User user) {
return userMapper.insert(user);
}
public User selectByPrimaryKey(Long id) {
return userMapper.selectByPrimaryKey(id);
}
public int updateByPrimaryKey(User user) {
return userMapper.updateByPrimaryKey(user);
}
public int deleteByPrimaryKey(Long id) {
return userMapper.deleteByPrimaryKey(id);
}
}
在这里,我们使用@Service
注解标注这个类是一个Service,并自动注入了UserMapper对象,然后将各个方法对应到Mapper中的方法。
9. 测试
在完成上述的代码编写后,我们可以通过以下步骤来测试它是否可以正常工作:
- 在数据库中创建名为
mybatis_demo
的数据库; - 在
mybatis_demo
数据库中创建以下表:
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- 编写Junit测试代码进行测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void test() {
User user = new User();
user.setName("Tom");
user.setAge(20);
userService.insert(user);
Long id = user.getId();
User user2 = userService.selectByPrimaryKey(id);
Assert.assertEquals(user2.getName(), "Tom");
user2.setName("Jerry");
userService.updateByPrimaryKey(user2);
User user3 = userService.selectByPrimaryKey(id);
Assert.assertEquals(user3.getName(), "Jerry");
userService.deleteByPrimaryKey(id);
User user4 = userService.selectByPrimaryKey(id);
Assert.assertNull(user4);
}
}
这个测试代码会先创建一个User对象,然后插入到数据库中,并通过selectByPrimaryKey
方法查询出来,然后更新它的名字并再次保存,最后删除这个用户,然后再次查询应该为null。
10. 示例
接下来,为了更好地理解这个过程,我们会提供两个完整的示例程序:简单示例和多模块示例。
10.1 简单示例
这个示例程序是一个简单的SpringBoot项目,只包含一个User
实体类和一个UserService
作为Service。完整代码可以查看springboot-mybatis-demo。
10.2 多模块示例
这个示例程序是一个多模块的SpringBoot项目,包含三个模块:
mybatis-demo-common
包含一个User
实体类;mybatis-demo-dao
包含一个UserMapper
和一个UserService
;mybatis-demo-web
包含一个UserController
,通过访问URL来调用UserService
的方法。
完整代码可以查看springboot-mybatis-demo-multi-module。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot集合Mybatis过程解析 - Python技术站