springboot整合Mybatis(xml)

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

开发步骤

1:改造pojo

2018-03-04_135332.png

2:编写mapper接口

1

public User getUserAndOrdersByUserId(int id);

3:编写mapper配置文件

2018-03-04_135625.png

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<?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中配置别名

1

2

#配置别名

mybatis.type-aliases-package=com.wendao.demo.pojo

5:测试

1

2

3

4

5

6

7

8

9

10

11

12

13

@RunWith(SpringRunner.class)

@SpringBootTest

public class Springboot03MybatisApplicationTests {

    @Autowired

    private UserMapper userMapper;

     

    @Test

    public void contextLoads5() {

        System.out.println(userMapper.getUserAndOrdersByUserId(28).getOrders().size());

    }

}

猜你喜欢

转载自blog.csdn.net/weixin_42107940/article/details/83216329