mybatis框架的连表查询one2one

mybatis 的连表查询one2one

1.可以通过主从表之间的关联查询通过主键两次

在resultMap映射中的association标签<association property="info" column="user_id"
   javaType="UserInfo"

再通过select属性得到从表对应映射的mapper的getUserInfoByUserId方法
   select="com.gezhi.mapper.UserInfoMapper.getUserInfoByUserId">
  </association>

从表的mapper

<sql id="userInfoSql">
  info_id,info_nickname,info_phone,info_email,info_gender,info_address
 </sql>
 
 <select id="getUserInfoByUserId" resultMap="userInfoMap"
  parameterType="int">
  select
  <include refid="userInfoSql"></include>
  from user_info where user_id=#{id}
 </select>

2.通过left join 连表查询一次

去掉select属性,添加从表的result Map

<association property="info" column="user_id"
   javaType="UserInfo"
   resultMap="com.gezhi.mapper.UserInfoMapper.userInfoMap">
  </association>

从表中的mapper

 <!-- 联合查询users表中的信息,双向关联 -->
 <resultMap type="UserInfo" id="userInfoMap">
  <id property="infoId" column="info_id" javaType="integer" />
  <result property="nickName" column="info_nickname"
   javaType="java.lang.String" />
  <result property="phone" column="info_phone"
   javaType="java.lang.String" />
  <result property="Email" column="info_email" javaType="string" />
  <result property="gender" column="info_gender"
   javaType="string" />
  <result property="address" column="info_address"
   javaType="java.lang.String" />
  <association property="user" column="user_id"
   javaType="User" resultMap="com.gezhi.mapper.UserMapper.userResultMap">
  </association>
 </resultMap>

 

转载于:https://www.cnblogs.com/IT-xiaoliang/p/11126828.html

MyBatis 是一种流行的 Java 持久化框架,它提供了许多功能,其中之一就是支持连表查询。下面是一个基本的连表查询示例: 1. 首先,在 MyBatisMapper 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 对象上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值