下面是 "mybatis+springboot中使用mysql的实例" 的完整攻略:
1. 安装MySQL
首先需要安装MySQL数据库,推荐使用官方网站提供的安装包进行安装,安装完成后需要创建一个数据库和对应的数据表。使用以下命令打开MySQL的命令行客户端:
mysql -u root -p
输入密码登录MySQL之后,使用以下命令创建一个名为 test
的数据库:
CREATE DATABASE test;
使用以下命令切换到 test
数据库:
USE test;
使用以下命令创建一个名为 user
的数据表:
CREATE TABLE user (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(32) NOT NULL,
age int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 新建Spring Boot项目并引入MyBatis和MySQL的依赖
使用IDE创建一个Spring Boot项目,作为示例,项目名为 mybatis-demo
。在 build.gradle
文件中添加 MyBatis 和 MySQL 的依赖:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
implementation 'mysql:mysql-connector-java:8.0.25'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
3. 编写MyBatis的Mapper和XML配置文件
在 src/main/java
目录下创建一个名为 com.example.mybatisdemo.mapper
的包,并在该包下创建一个名为 UserMapper
的类,代码如下:
package com.example.mybatisdemo.mapper;
import com.example.mybatisdemo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE name = #{name}")
User findByName(@Param("name") String name);
}
同时,在 src/main/resources
目录下创建一个名为 mapper
的文件夹,然后在该文件夹下创建一个名为 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.mybatisdemo.mapper.UserMapper">
<select id="findByName" parameterType="java.lang.String"
resultType="com.example.mybatisdemo.entity.User">
SELECT * FROM user WHERE name = #{name}
</select>
</mapper>
以上两个文件是 MyBatis 的核心配置文件,XML 文件中配置了对应的 SQL 语句,而 Mapper 接口则定义了如何访问数据库。
4. 编写实体类和Service层
在 src/main/java
目录下,创建一个名为 com.example.mybatisdemo.entity
的包,并在该包下创建一个名为 User
的类,代码如下:
package com.example.mybatisdemo.entity;
public class User {
private Integer id;
private String name;
private Integer age;
// getters and setters ...
}
在 src/main/java
目录下,创建一个名为 com.example.mybatisdemo.service
的包,并在该包下创建一个名为 UserService
的类,代码如下:
package com.example.mybatisdemo.service;
import com.example.mybatisdemo.entity.User;
import com.example.mybatisdemo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User findUserByName(String name) {
return userMapper.findByName(name);
}
}
以上两个文件是 Service 层的核心文件,实体类定义了返回结果的数据结构,Service 类则定义了 MyBatis 的配置文件 Mapper 和查询数据库的代码之间的桥梁。
5. 编写Controller层
在 src/main/java
目录下,创建一个名为 com.example.mybatisdemo.controller
的包,并在该包下创建一个名为 UserController
的类,代码如下:
package com.example.mybatisdemo.controller;
import com.example.mybatisdemo.entity.User;
import com.example.mybatisdemo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/user/{name}")
public User findUserByName(@PathVariable("name") String name) {
return userService.findUserByName(name);
}
}
以上代码是 Controller 层的核心文件,其中 @GetMapping
注解用于映射 HTTP GET 请求的访问路径, /user/{name}
就是应用程序的一个 RESTful API 接口,这个接口可以返回 JSON 格式的数据。
6. 配置MySQL连接信息
在 src/main/resources/application.properties
中配置 MySQL 连接信息,代码如下:
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
7. 启动应用程序
在项目根目录下运行以下命令启动应用程序:
./gradlew bootRun
启动成功后,可以在浏览器中访问 http://localhost:8080/user/*
接口,其中 *
是待查询的用户名。例如,输入 http://localhost:8080/user/张三
即可查询用户名为张三的用户信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis+springboot中使用mysql的实例 - Python技术站