注解方式实现单表查询还是很方便的,如果是连表查询不建议用注解,推荐用xml。下面我们使用xml实现查询用户的同时,把用户订单查询出来
开发步骤
1:改造pojo
2:编写mapper接口
1 | public User getUserAndOrdersByUserId( int id); |
3:编写mapper配置文件
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()); } } |