把以上三张表联合起来用mybatis做一个增删改查
时间: 2024-01-29 07:04:05 浏览: 91
好的,首先需要定义一个对应表的Java实体类,如下所示:
```java
public class User {
private Integer id;
private String name;
private Integer age;
private String email;
// getter和setter方法省略
}
public class Order {
private Integer id;
private String orderNo;
private Integer userId;
// getter和setter方法省略
}
public class OrderDetail {
private Integer id;
private Integer orderId;
private Integer productId;
private Integer quantity;
// getter和setter方法省略
}
```
然后,在Mybatis中定义对应的Mapper接口,如下所示:
```java
public interface UserMapper {
User selectUserById(Integer id);
List<User> selectAllUsers();
void insertUser(User user);
void updateUser(User user);
void deleteUser(Integer id);
}
public interface OrderMapper {
Order selectOrderById(Integer id);
List<Order> selectOrdersByUserId(Integer userId);
void insertOrder(Order order);
void updateOrder(Order order);
void deleteOrder(Integer id);
}
public interface OrderDetailMapper {
List<OrderDetail> selectOrderDetailsByOrderId(Integer orderId);
void insertOrderDetail(OrderDetail orderDetail);
void updateOrderDetail(OrderDetail orderDetail);
void deleteOrderDetail(Integer id);
}
```
在Mybatis配置文件中,需要定义对应的Mapper映射关系,如下所示:
```xml
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
<mapper resource="com/example/mapper/OrderMapper.xml"/>
<mapper resource="com/example/mapper/OrderDetailMapper.xml"/>
</mappers>
```
然后,在对应的Mapper XML文件中,定义对应的SQL语句,如下所示:
```xml
<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectUserById" parameterType="java.lang.Integer" resultType="com.example.entity.User">
SELECT id, name, age, email
FROM user
WHERE id = #{id}
</select>
<select id="selectAllUsers" resultType="com.example.entity.User">
SELECT id, name, age, email
FROM user
</select>
<insert id="insertUser" parameterType="com.example.entity.User">
INSERT INTO user (name, age, email)
VALUES (#{name}, #{age}, #{email})
</insert>
<update id="updateUser" parameterType="com.example.entity.User">
UPDATE user
SET name = #{name}, age = #{age}, email = #{email}
WHERE id = #{id}
</update>
<delete id="deleteUser" parameterType="java.lang.Integer">
DELETE FROM user
WHERE id = #{id}
</delete>
</mapper>
<!-- OrderMapper.xml -->
<mapper namespace="com.example.mapper.OrderMapper">
<select id="selectOrderById" parameterType="java.lang.Integer" resultType="com.example.entity.Order">
SELECT id, order_no, user_id
FROM order
WHERE id = #{id}
</select>
<select id="selectOrdersByUserId" parameterType="java.lang.Integer" resultType="com.example.entity.Order">
SELECT id, order_no, user_id
FROM order
WHERE user_id = #{userId}
</select>
<insert id="insertOrder" parameterType="com.example.entity.Order">
INSERT INTO order (order_no, user_id)
VALUES (#{orderNo}, #{userId})
</insert>
<update id="updateOrder" parameterType="com.example.entity.Order">
UPDATE order
SET order_no = #{orderNo}, user_id = #{userId}
WHERE id = #{id}
</update>
<delete id="deleteOrder" parameterType="java.lang.Integer">
DELETE FROM order
WHERE id = #{id}
</delete>
</mapper>
<!-- OrderDetailMapper.xml -->
<mapper namespace="com.example.mapper.OrderDetailMapper">
<select id="selectOrderDetailsByOrderId" parameterType="java.lang.Integer" resultType="com.example.entity.OrderDetail">
SELECT id, order_id, product_id, quantity
FROM order_detail
WHERE order_id = #{orderId}
</select>
<insert id="insertOrderDetail" parameterType="com.example.entity.OrderDetail">
INSERT INTO order_detail (order_id, product_id, quantity)
VALUES (#{orderId}, #{productId}, #{quantity})
</insert>
<update id="updateOrderDetail" parameterType="com.example.entity.OrderDetail">
UPDATE order_detail
SET order_id = #{orderId}, product_id = #{productId}, quantity = #{quantity}
WHERE id = #{id}
</update>
<delete id="deleteOrderDetail" parameterType="java.lang.Integer">
DELETE FROM order_detail
WHERE id = #{id}
</delete>
</mapper>
```
最后,在Java程序中调用对应的Mapper接口方法,即可完成对应的增删改查操作,如下所示:
```java
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.selectUserById(1);
List<User> userList = userMapper.selectAllUsers();
user.setName("Tom");
userMapper.updateUser(user);
userMapper.deleteUser(1);
OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);
Order order = orderMapper.selectOrderById(1);
List<Order> orderList = orderMapper.selectOrdersByUserId(1);
order.setOrderNo("20210315");
orderMapper.insertOrder(order);
orderMapper.updateOrder(order);
orderMapper.deleteOrder(1);
OrderDetailMapper orderDetailMapper = sqlSession.getMapper(OrderDetailMapper.class);
List<OrderDetail> orderDetailList = orderDetailMapper.selectOrderDetailsByOrderId(1);
orderDetailMapper.insertOrderDetail(orderDetail);
orderDetailMapper.updateOrderDetail(orderDetail);
orderDetailMapper.deleteOrderDetail(1);
sqlSession.commit();
sqlSession.close();
```
阅读全文
相关推荐


















