mybatis generator表关联
时间: 2023-07-10 17:31:53 浏览: 256
Mybatis多表关联查询的实现(DEMO)
5星 · 资源好评率100%
MyBatis Generator可以根据表之间的外键关系生成关联查询语句。在生成的XML映射文件中,可以使用`<association>`和`<collection>`标签来描述表之间的关联关系。
例如,如果有两个表`order`和`order_item`,`order_item`表有一个外键指向`order`表的主键,则可以在MyBatis Generator的配置文件中添加以下配置:
```xml
<table tableName="order">
<generatedKey column="id" sqlStatement="JDBC" identity="true"/>
</table>
<table tableName="order_item">
<generatedKey column="id" sqlStatement="JDBC" identity="true"/>
<columnOverride column="order_id" javaProperty="orderId"/>
</table>
```
这里使用了`<columnOverride>`标签来指定`order_item`表中的`order_id`列对应到Java模型中的`orderId`属性。
然后,在`order.xml`映射文件中添加以下配置:
```xml
<resultMap id="BaseResultMap" type="com.example.Order">
<id column="id" property="id"/>
<result column="order_no" property="orderNo"/>
<association property="orderItem" javaType="com.example.OrderItem">
<id column="order_item_id" property="id"/>
<result column="order_item_name" property="name"/>
</association>
</resultMap>
<select id="selectById" resultMap="BaseResultMap">
SELECT o.id, o.order_no, oi.id as order_item_id, oi.name as order_item_name
FROM `order` o
LEFT JOIN `order_item` oi ON o.id = oi.order_id
WHERE o.id = #{id}
</select>
```
这里使用了`<association>`标签来描述`order`表和`order_item`表之间的关联关系,`property`属性指定了在Java模型中的属性名,`javaType`属性指定了关联模型的类型,`<id>`和`<result>`标签则分别描述了关联模型中的主键和属性字段。
最后,在生成的Java模型中添加`OrderItem`属性,并提供相应的getter和setter方法即可。
```java
public class Order {
private Long id;
private String orderNo;
private OrderItem orderItem;
// getter and setter
}
public class OrderItem {
private Long id;
private String name;
// getter and setter
}
```
阅读全文