MyBatis註解之一對多
阿新 • • 發佈:2019-02-16
1、CategoryMapper
- 新增加CategoryMapper介面,查詢所有Category
@Select註解獲取Category類本身 - @Results 通過@Result和@Many中呼叫ProductMapper.listByCategory()方法相結合,來獲取一對多關係
public interface CategoryMapper {
@Select(" select * from category_ ")
@Results({
@Result(property = "id", column = "id"),
@Result (property = "products", javaType = List.class, column = "id", many = @Many(select = "com.how2java.mapper.ProductMapper.listByCategory") )
})
public List<Category> list();
}
2、ProductMapper
註解@Select用於根據分類id獲取產品集合
@Select(” select * from product_ where cid = #{cid}”)
public interface ProductMapper {
@Select(" select * from product_ where cid = #{cid}")
public List<Product> listByCategory (int cid);
}
3、mybatis-config.xml
<mappers>
<mapper class="com.how2java.mapper.CategoryMapper"/>
<mapper class="com.how2java.mapper.ProductMapper" />
</mappers>
4、Test類
public class TestMybatis {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
CategoryMapper mapper = session.getMapper(CategoryMapper.class);
listAll(mapper);
session.commit();
session.close();
}
private static void listAll(CategoryMapper mapper) {
List<Category> cs = mapper.list();
for (Category c : cs) {
System.out.println(c.getName());
List<Product> ps = c.getProducts();
for (Product p : ps) {
System.out.println("\t"+p.getName());
}
}
}
}
結果:
category_表
product_表