连表查询 mybatis
时间: 2023-11-07 16:48:36 浏览: 40
MyBatis 是一种流行的 Java 持久化框架,它提供了许多功能,其中之一就是支持连表查询。下面是一个基本的连表查询示例:
1. 首先,在 MyBatis 的 Mapper XML 文件中定义两个表的关联关系。例如:
```xml
<resultMap id="userMap" type="User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
<result property="email" column="email"/>
<association property="profile" javaType="Profile">
<id property="id" column="p_id"/>
<result property="firstName" column="first_name"/>
<result property="lastName" column="last_name"/>
<result property="address" column="address"/>
</association>
</resultMap>
```
在这个示例中,我们定义了两个表之间的关联关系。用户表和个人信息表通过 ID 进行关联,并且在结果映射中使用了 association 标签。
2. 接下来,在 Mapper XML 文件中编写 SQL 语句,执行连表查询。例如:
```xml
<select id="getUserById" resultMap="userMap">
SELECT u.id, u.username, u.password, u.email, p.id as p_id, p.first_name, p.last_name, p.address
FROM user u, profile p
WHERE u.id = #{id} AND u.id = p.user_id
</select>
```
在这个示例中,我们使用 SELECT 语句连接两个表并返回结果。我们还使用 WHERE 子句指定了两个表之间的关联条件。
3. 最后,在 Java 代码中调用 MyBatis 执行 SQL 查询并获取结果。例如:
```java
User user = sqlSession.selectOne("getUserById", 1);
```
在这个示例中,我们使用 MyBatis 的 sqlSession 对象调用 selectOne 方法来执行 getUserById SQL 查询,并将结果映射到 User 对象上。