下面就是“springboot整合mybatis实现多表查询的实战记录”的完整攻略。
一、准备工作
1.1 创建一个SpringBoot项目
在IDE中创建一个SpringBoot项目,选择Web、MyBatis、MySQL等依赖。
1.2 导入需要的依赖
在pom.xml
文件中导入以下依赖:
<!-- MyBatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!-- MySQL依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
1.3 创建数据库和表
在MySQL中创建数据库和两个表,分别为order
和user
。表之间的关系是一个用户可以拥有多个订单。下面是表结构和例子数据:
user表
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `user` (id, name) VALUES (1, '张三');
INSERT INTO `user` (id, name) VALUES (2, '李四');
order表
CREATE TABLE `order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `order` (id, user_id, name) VALUES (1, 1, '订单1');
INSERT INTO `order` (id, user_id, name) VALUES (2, 1, '订单2');
INSERT INTO `order` (id, user_id, name) VALUES (3, 2, '订单3');
二、实现多表查询
2.1 创建实体类
在项目中创建User
和Order
两个实体类,分别对应上面创建的两个表。
User.java
public class User {
private int id;
private String name;
// Getters and setters
}
Order.java
public class Order {
private int id;
private int userId;
private String name;
// Getters and setters
}
2.2 创建Mapper
在src/main/java
目录下创建一个mapper
包,然后创建UserMapper
和OrderMapper
两个Mapper接口。
UserMapper.java
public interface UserMapper {
List<User> findAll();
}
OrderMapper.java
public interface OrderMapper {
List<Order> findByUserId(int userId);
}
2.3 创建Mapper.xml
在src/main/resources
目录下创建mapper
目录,然后在其中创建UserMapper.xml
和OrderMapper.xml
两个Mapper配置文件。
UserMapper.xml
<mapper namespace="com.example.demo.mapper.UserMapper">
<resultMap id="UserResultMap" type="com.example.demo.entity.User">
<id property="id" column="id"/>
<result property="name" column="name"/>
</resultMap>
<select id="findAll" resultMap="UserResultMap">
SELECT *
FROM user
</select>
</mapper>
OrderMapper.xml
<mapper namespace="com.example.demo.mapper.OrderMapper">
<resultMap id="OrderResultMap" type="com.example.demo.entity.Order">
<id property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="name" column="name"/>
</resultMap>
<select id="findByUserId" resultMap="OrderResultMap">
SELECT *
FROM `order`
WHERE user_id = #{userId}
</select>
</mapper>
2.4 实现多表查询
在src/main/java
目录下创建controller
包,然后在其中创建UserController
和OrderController
两个Controller类。
UserController.java
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/users")
public List<User> getUsers() {
return userMapper.findAll();
}
}
OrderController.java
@RestController
public class OrderController {
@Autowired
private OrderMapper orderMapper;
@GetMapping("/users/{userId}/orders")
public List<Order> getOrdersByUserId(@PathVariable int userId) {
return orderMapper.findByUserId(userId);
}
}
2.5 测试多表查询
运行项目,然后在浏览器中访问http://localhost:8080/users
接口,可以得到以下结果:
[
{
"id": 1,
"name": "张三"
},
{
"id": 2,
"name": "李四"
}
]
然后再访问http://localhost:8080/users/1/orders
接口,可以得到以下结果:
[
{
"id": 1,
"userId": 1,
"name": "订单1"
},
{
"id": 2,
"userId": 1,
"name": "订单2"
}
]
这就是实现多表查询的完整攻略啦!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot整合mybatis实现多表查询的实战记录 - Python技术站