1. 程式人生 > >MyBatis註解之一對多

MyBatis註解之一對多

1、CategoryMapper

  1. 新增加CategoryMapper介面,查詢所有Category
    @Select註解獲取Category類本身
  2. @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_表
這裡寫圖片描述