多对一查询
3.1 环境配置
Orders.java添加属性User
package com.biem.pojo;
import lombok.*;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Orders {
private Integer id;
private String number;
private Integer userId;
private Users users;
}
3.2 解决方案
3.2.1 嵌套查询方式
3.2.1.1 UsersMapper.java 添加
public Users getUsersById(Integer id);
3.2.1.2 OrdersMapper.java 添加
public List<Orders> getOrders1(Integer userId);
3.2.1.3 UsersMappers.xml
<select id="getUsersById" resultType="users">
select * from tb_user where `id` = #{
id}
</select>
3.2.1.4 OrdersMapper.xml
<select id="getOrders1" resultMap="ordersResult1">
select * from tb_orders where user_id = #{
userId}
</select>
<resultMap id="ordersResult1" type="orders">
<result column="id" property="id"/>
<result column="number" property="number"/>
<!--复杂的属性,我们需要单独处理
对象:使用association
集合:collection-->
<association column="id" property="users" javaType="users" select="com.biem.mapper.UsersMapper.getUsersById"/>
</resultMap>
3.2.1.5 OrdersTest.java
package com.biem.test;
import com.biem.mapper.OrdersMapper;
import com.biem.pojo.Orders;
import com.biem.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class OrdersTest {
@Test
public void testGetOrders1(){
SqlSession session = MyBatisUtil.openSession();
OrdersMapper mapper = session.getMapper(OrdersMapper.class);
List<Orders> ordersList = mapper.getOrders1(1);
System.out.println("ordersList = " + ordersList);
}
}
3.2.1.6 测试结果
"C:\Program Files (x86)\Java\jdk1.8.0_201\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:\ssm\ideal\IntelliJ IDEA Community Edition 2022.3.2\lib\idea_rt.jar=55796:D:\ssm\ideal\IntelliJ IDEA Community Edition 2022.3.2\bin" -Dfile.encoding=UTF-8 -classpath "D:\ssm\ideal\IntelliJ IDEA Community Edition 2022.3.2\lib\idea_rt.jar;D:\ssm\ideal\IntelliJ IDEA Community Edition 2022.3.2\plugins\junit\lib\junit5-rt.jar;D:\ssm\ideal\IntelliJ IDEA Community Edition 2022.3.2\plugins\junit\lib\junit-rt.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\charsets.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\deploy.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\access-bridge-32.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\cldrdata.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\dnsns.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\jaccess.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\jfxrt.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\localedata.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\nashorn.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\sunec.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\sunjce_provider.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\sunmscapi.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\sunpkcs11.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\zipfs.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\javaws.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\jce.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\jfr.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\jfxswt.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\jsse.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\management-agent.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\plugin.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\resources.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\rt.jar;D:\ssm\ideal\mybatis_3\M2O\target\test-classes;D:\ssm\ideal\mybatis_3\M2O\target\classes;C:\Users\86185\.m2\repository\org\mybatis\mybatis\3.4.6\mybatis-3.4.6.jar;C:\Users\86185\.m2\repository\junit\junit\4.12\junit-4.12.jar;C:\Users\86185\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\86185\.m2\repository\mysql\mysql-connector-java\8.0.18\mysql-connector-java-8.0.18.jar;C:\Users\86185\.m2\repository\com\google\protobuf\protobuf-java\3.6.1\protobuf-java-3.6.1.jar;C:\Users\86185\.m2\repository\log4j\log4j\1.2.12\log4j-1.2.12.jar;C:\Users\86185\.m2\repository\org\projectlombok\lombok\1.18.18\lombok-1.18.18.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 com.biem.test.OrdersTest,testGetOrders1
DEBUG 05-15 15:34:06,263 ==> Preparing: select * from tb_orders where user_id = ? (BaseJdbcLogger.java:159)
DEBUG 05-15 15:34:06,287 ==> Parameters: 1(Integer) (BaseJdbcLogger.java:159)
DEBUG 05-15 15:34:06,302 ====> Preparing: select * from tb_user where `id` = ? (BaseJdbcLogger.java:159)
DEBUG 05-15 15:34:06,303 ====> Parameters: 1(Integer) (