注解方式实现单表查询还是很方便的,如果是连表查询不建议用注解,推荐用xml。下面我们使用xml实现查询用户的同时,把用户订单查询出来


开发步骤

1:改造pojo

springboot整合mybatis(xml)


2:编写mapper接口

public User getUserAndOrdersByUserId(int id);

3:编写mapper配置文件

springboot整合mybatis(xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace是命名空间,作用sql语句的隔离,后面还有重要作用 #{}作用就是占位符,相当于jdbc的“?” parameterType:查询的参数类型 
    resultType:查询结果的数据类型,如果时候pojo应该给全路径。 -->
<mapper namespace="com.wendao.demo.mapper.UserMapper">
 
    <resultMap type="user" id="getUserAndOrdersByUserIdMap">
        <id column="userid" property="id" />
        <result column="username" property="username" />
        <collection property="orders" ofType="orders">
            <id column="oid" property="id" />
            <result column="number" property="number"/>
        </collection>
    </resultMap>
 
 
    <select id="getUserAndOrdersByUserId" resultMap="getUserAndOrdersByUserIdMap">
 
        select `user`.id
        userid,`user`.username,orders.id oid,orders.number from `user`
        LEFT JOIN orders on `user`.id=orders.user_id
        where `user`.id=#{id}
 
    </select>
</mapper>


4:在application.properties中配置别名

#配置别名
mybatis.type-aliases-package=com.wendao.demo.pojo

5:测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot03MybatisApplicationTests {
 
    @Autowired
    private UserMapper userMapper;
     
    @Test
    public void contextLoads5() {
        System.out.println(userMapper.getUserAndOrdersByUserId(28).getOrders().size());
    }
 
}


相关文章: