Spring Boot通过Mybatis接入MySQL数据库
介绍
在Web应用程序中,数据库是一个重要的组成部分。而Spring Boot和Mybatis是Java开发中常用的框架和工具,它们可以帮助我们快速、高效地访问和操作数据库。
前提条件
确保您已经安装了Java开发环境和Maven构建工具,以及MySQL数据库。
步骤一:创建Spring Boot项目
首先,我们需要创建一个新的Spring Boot项目。可以使用Spring Initializr(https://start.spring.io/)来快速创建一个空项目,选择"Maven Project"、“Java”、“Spring Boot 版本”、"项目依赖(Web, Mybatis, MySQL)"等选项,然后点击"Generate"按钮下载生成的项目。
在使用MyBatis接入MySQL数据库时,需要引入以下依赖:
1. MyBatis依赖:
- MyBatis是一款开源的持久层框架,使用它可以方便地操作数据库。
- 在Maven项目中,需要在
pom.xml
文件中添加以下依赖:<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency>
2. MySQL连接驱动依赖:
- MySQL连接驱动是用于与MySQL数据库建立连接的组件。
- 在Maven项目中,需要在
pom.xml
文件中添加以下依赖:<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency>
步骤二:配置MySQL数据库连接
打开项目的application.properties
文件(或者是application.yml
文件),在其中添加以下MySQL数据库的配置信息。请将your-database
、your-username
和your-password
替换为实际的数据库名、用户名和密码。
spring.datasource.url=jdbc:mysql://localhost:3306/your-database?useSSL=false&serverTimezone=UTC
spring.datasource.username=your-username
spring.datasource.password=your-password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
步骤三:定义实体类
创建一个Java类,表示数据库中的某个表。这个类通常称为实体类或模型类。属性和数据库表中的字段对应。例如,下面是定义一个名为User
的实体类的例子:
public class User {
private Long id;
private String name;
private String email;
// 省略getter和setter方法
}
步骤四:创建Mapper接口
创建一个UserMapper
接口,用于定义对User
表进行操作的方法。该接口使用Mybatis的注解来定义数据库操作。例如,下面是一个简单的UserMapper
接口的例子:
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user")
List<User> findAll();
@Insert("INSERT INTO user(name, email) VALUES(#{name}, #{email})")
@Options(useGeneratedKeys = true, keyProperty = "id")
void insert(User user);
@Update("UPDATE user SET name=#{name}, email=#{email} WHERE id=#{id}")
void update(User user);
@Delete("DELETE FROM user WHERE id=#{id}")
void delete(Long id);
}
步骤五:创建Service接口和实现类
创建一个UserService
接口,用于定义业务逻辑相关的方法。然后创建一个实现类UserServiceImpl
,实现UserService
接口,并在该实现类中注入UserMapper
。我们可以在实现类中编写更复杂的业务逻辑。例如,下面是一个简单的UserServiceImpl
的例子:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> getAllUsers() {
return userMapper.findAll();
}
@Override
public void addUser(User user) {
userMapper.insert(user);
}
@Override
public void updateUser(User user) {
userMapper.update(user);
}
@Override
public void deleteUser(Long id) {
userMapper.delete(id);
}
}
步骤六:创建Controller类
创建一个UserController
类,用于处理HTTP请求。在其中注入UserService
,并编写对应的请求处理方法。例如,下面是一个简单的UserController
的例子:
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping()
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@PostMapping()
public void addUser(@RequestBody User user) {
userService.addUser(user);
}
@PutMapping("/{id}")
public void updateUser(@PathVariable("id") Long id, @RequestBody User user) {
user.setId(id);
userService.updateUser(user);
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable("id") Long id) {
userService.deleteUser(id);
}
}
步骤七:运行项目
在命令行中,进入项目的根目录,执行mvn spring-boot:run
命令来运行应用程序。或者,直接运行IDE中的启动类。
现在,您已经成功使用Spring Boot和Mybatis来接入MySQL数据库了!您可以使用各种HTTP客户端或浏览器来测试刚刚创建的API。例如,可以使用cURL命令行工具发送HTTP请求,如curl localhost:8080/users
。
步骤四(补充):创建Mapper接口和XML文件
我们通常还会使用XML文件进行操作,下面补充这种实现形式。
创建一个名为UserMapper
的Java接口,用于定义对User
表进行操作的方法。然后,创建一个名为UserMapper.xml
的XML文件,用于实现这些方法。
UserMapper接口:
@Mapper
public interface UserMapper {
List<User> findAll();
void insert(User user);
void update(User user);
void delete(Long id);
}
UserMapper.xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.mapper.UserMapper">
<select id="findAll" resultType="com.example.model.User">
SELECT * FROM user
</select>
<insert id="insert">
INSERT INTO user(name, email) VALUES(#{name}, #{email})
</insert>
<update id="update">
UPDATE user SET name=#{name}, email=#{email} WHERE id=#{id}
</update>
<delete id="delete">
DELETE FROM user WHERE id=#{id}
</delete>
</mapper>
注意:要将UserMapper.xml
文件放在与UserMapper
接口相同的包路径下,并确保在application.properties
(或application.yml
)文件中配置了正确的Mybatis配置。
mybatis.mapper-locations=classpath:mapper/**/*.xml
mybatis.type-aliases-package=com.example.model
创建一个名为UserMapperImpl
的类,并实现UserMapper
接口。在该实现类中注入SqlSession
,用来执行SQL语句。
@Repository
public class UserMapperImpl implements UserMapper {
private final SqlSession sqlSession;
public UserMapperImpl(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}
@Override
public List<User> findAll() {
return sqlSession.selectList("com.example.mapper.UserMapper.findAll");
}
@Override
public void insert(User user) {
sqlSession.insert("com.example.mapper.UserMapper.insert", user);
}
@Override
public void update(User user) {
sqlSession.update("com.example.mapper.UserMapper.update", user);
}
@Override
public void delete(Long id) {
sqlSession.delete("com.example.mapper.UserMapper.delete", id);
}
}