Mybatis的 关联关系映射

重点:
0、上期回顾;
1、配置mybatis关联映射

重点解析:

0、回顾:

一、mybatis与ehcache的整合

1、导入相关依赖(ehcache、mybatis-ehcache的整合,spring-support)
2、spring-ehcache(cachemanagerfactory ehcache.xml cachemanager)
3、在spring-mybatis文件中的sqlsessionfactory中开启二级缓存
4、在*Mapper.xml中开启二级缓存

  • 4.1、默认可以缓存一条以及多条
  • 4.2、mybatis可以控制单个方法是否使用二级缓存 usercache=“false”

二、mybatis与redis的整合
1、导入相关依赖
2、spring-redis
2.1、需要注册redis.properties文件
2.2、配置redis的连接池
2.3、配置连接工厂
2.4、配置redistemplete
2.4.1、通过第三方类将redistemplete注入到实现了ibatis暴露在外部的cache接口的类
2.4.2、在*Mapper.xml中开启二级缓存

ps:注意点:
			1、spring不支持多文件注册,因该使用其他方式
			2、pom.xml中应该配置编译redis。properties文件
			3、将spring-redis添加到spring-Context.xml

1、配置mybatis关联映射

1、通过mybatis-generator插件生成dao、mapper、model

1)配置mybatis-generator插件生成文件位置
2)修改generatorConfig.xml配置文件的生成目录(mapper和model)及对应生成关系

3.修改Customer、Order实体类
1)实现序列化接口
2)建立实体映射关联关系(一对多、多对一)
#一对多:一个客户对应多个订单
private List orders=new ArrayList();

#多对一:多个订单对应一个客户(一个订单对应一个客户)
private Customer customer;

4.配置mybatis关联映射

4.1 一对多

 <resultMap id="one2many" type="Customer">
        <id column="customer_id" property="customerId"/>
        <result column="customer_name" property="customerName"/>
        <!-- 一对多的关系 -->
        <!-- property: 指的是集合属性的值, ofType:指的是集合中元素的类型 -->
        <collection property="orders" ofType="Order">
            <id column="order_id" property="orderId"/>
            <result column="order_no" property="orderNo"/>
        </collection>
    </resultMap>

   注意事项,使用左外连接而非内连接!!!

4.2 多对一

 <resultMap id="many2one" type="Order">
      <id column="order_id" property="orderId"/>
      <result column="order_no" property="orderNo"/>
      <result column="cid" property="cid"/>
      <!-- 多对一的关系 -->
      <!-- property: 指的是属性的值, javaType:指的是属性的类型-->
    
      <association property="customer" javaType="Customer">
          <id column="customer_id" property="customerId"/>
          <result column="customer_name" property="customerName"/>
      </association>
 </resultMap>

猜你喜欢

转载自blog.csdn.net/cao_2000/article/details/85212840