在Spring Boot框架中整合MyBatis框架,需要经过以下主要步骤:
- 添加依赖:在
pom.xml
中添加Spring Boot和MyBatis相关的依赖。需要添加spring-boot-starter-web
,mybatis-spring-boot-starter
,mysql-connector-java
等依赖。
<dependencies>
<!-- Spring Boot Web Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis Starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!-- MySQL Connector/J -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
- 配置数据源:在
application.properties
配置文件中,配置MySQL的连接信息。其中,spring.datasource.driver-class-name
指定数据源的驱动类,spring.datasource.url
指定数据库的URL,spring.datasource.username
和spring.datasource.password
指定数据库的用户名和密码。
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
- 创建实体类:创建JavaBean,用于映射数据库表,必须添加
@Data
和@AllArgsConstructor
注解。
@Data
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private Integer age;
}
- 创建Mapper接口:在
src/main/java
目录下新建包com.example.demo.mapper
,创建一个Mapper接口UserMapper
,使用注解@Mapper
标记这个接口是一个Mapper接口,并编写相关方法。
@Mapper
public interface UserMapper {
List<User> findAll();
User findById(Integer id);
void saveUser(User user);
void updateUser(User user);
void deleteUser(Integer id);
}
- 创建Mapper.xml文件:在
src/main/resources
目录下新建包mapper
,创建一个Mapper.xml文件UserMapper.xml
,编写SQL语句,实现Mapper接口中的方法。
<?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.demo.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.example.demo.entity.User">
<id column="id" property="id" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
</resultMap>
<select id="findAll" resultMap="BaseResultMap">
select * from user
</select>
<select id="findById" resultMap="BaseResultMap">
select * from user where id=#{id}
</select>
<insert id="saveUser">
insert into user(name, age) values(#{name}, #{age})
</insert>
<update id="updateUser">
update user set name=#{name}, age=#{age} where id=#{id}
</update>
<delete id="deleteUser">
delete from user where id=#{id}
</delete>
</mapper>
- 实现Service层:在
src/main/java
目录下新建包com.example.demo.service
,创建一个Service接口UserService
,以及一个实现类UserServiceImpl
。在UserServiceImpl
中,可以注入UserMapper
接口,并调用Mapper方法。
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.findAll();
}
@Override
public User findById(Integer id) {
return userMapper.findById(id);
}
@Override
public void saveUser(User user) {
userMapper.saveUser(user);
}
@Override
public void updateUser(User user) {
userMapper.updateUser(user);
}
@Override
public void deleteUser(Integer id) {
userMapper.deleteUser(id);
}
}
- 编写Controller:在
src/main/java
目录下新建包com.example.demo.controller
,创建一个Controller类UserController
,注入UserService
实例,并编写相关接口方法。
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/")
public List<User> findAll() {
return userService.findAll();
}
@GetMapping("/{id}")
public User findById(@PathVariable Integer id) {
return userService.findById(id);
}
@PostMapping("/")
public String saveUser(@RequestBody User user) {
userService.saveUser(user);
return "success";
}
@PutMapping("/")
public String updateUser(@RequestBody User user) {
userService.updateUser(user);
return "success";
}
@DeleteMapping("/{id}")
public String deleteUser(@PathVariable Integer id) {
userService.deleteUser(id);
return "success";
}
}
- 运行程序:执行
mvn clean package
命令,然后执行java -jar target/demo-0.0.1-SNAPSHOT.jar
命令,启动Spring Boot应用。在浏览器或Postman中访问http://localhost:8080/api/users/
,即可测试API是否正常。
示例1:查询用户列表接口
创建一个Spring Boot应用,并在pom.xml
中添加以下依赖。
<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>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
创建一个User
实体类。
@Data
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private Integer age;
}
创建一个UserMapper
接口。
@Mapper
public interface UserMapper {
List<User> findAll();
}
创建一个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.demo.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.example.demo.entity.User">
<id column="id" property="id" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
</resultMap>
<select id="findAll" resultMap="BaseResultMap">
select * from user
</select>
</mapper>
创建一个UserService
接口。
public interface UserService {
List<User> findAll();
}
创建一个UserServiceImpl
实现该接口。
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.findAll();
}
}
创建一个UserController
控制器类。
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/")
public List<User> findAll() {
return userService.findAll();
}
}
运行程序,并在浏览器或Postman中访问http://localhost:8080/api/users/
,即可返回所有用户的信息。
示例2:新增用户接口
创建一个Spring Boot应用,并在pom.xml
中添加以下依赖。
<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>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
创建一个User
实体类。
@Data
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private Integer age;
}
创建一个UserMapper
接口。
@Mapper
public interface UserMapper {
void saveUser(User user);
}
创建一个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.demo.mapper.UserMapper">
<insert id="saveUser">
insert into user(name, age) values(#{name}, #{age})
</insert>
</mapper>
创建一个UserService
接口。
public interface UserService {
void saveUser(User user);
}
创建一个UserServiceImpl
实现该接口。
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public void saveUser(User user) {
userMapper.saveUser(user);
}
}
创建一个UserController
控制器类。
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/")
public String saveUser(@RequestBody User user) {
userService.saveUser(user);
return "success";
}
}
运行程序,并在浏览器或Postman中发送Post请求,访问http://localhost:8080/api/users/
,请求体为以下JSON格式。
{
"name": "张三",
"age": 20
}
即可成功创建一个用户,并返回“success”。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot框架中如何整合mybatis框架思路详解 - Python技术站