mybatis使用注解开发多表操作以及实现缓存开启和延时加载

一一映射 借助@One

@One就相当于我们使用xml的时候的 asscciation

 //@Results  等价于  resultMap
    // @Result  相当于  result和id的组合
    @Results(
            id = "userMap",//这个就是唯一标识,后来直接使用这个标识就可以了
            value = {
                //主键id才有写true  不是逐渐的id就不要用写了
                @Result ( id = true , property = "userId",column = "id"),
                @Result ( property = "userName",column = "username"),
                    @Result ( property = "userAge",column = "age"),
                    @Result ( property = "userAddress",column = "address"),
                    @Result ( property = "userGender",column = "gender"),
                    @Result ( property = "userRid",column = "u_rid"),
                    @Result ( property = "userDid",column = "u_did"),
                    @Result( property = "department",//这是user类里面的department属性
                            column = "u_did",//这个是外键
                            one = @One(select = "com.zhiyou100.dao.IDepartmentDao.queryDepartmentById")//这个是一一映射该路径下的这个接口的方法
                    )

            }
    )

一对多映射 借助@Many

@Many 就相当于我们使用xml开发的collection

   @Results(
            id = "departmentMap",
            value = {
                    @Result(id = true,column = "d_id",property = "id"),
                    @Result(column = "d_name",property = "departmentName"),
                    @Result(column = "d_desc",property = "departmentDesc"),
                    @Result(column = "d_update",property = "departmentUpdate"),
                    @Result(
                            column = "d_id",//这是外键
                            property = "user",//这是pojo类里面的的映射
                            many = @Many(select = "com.zhiyou100.dao.IUserDao.queryUserByDid")//这是我们要映射泪下接口内部的方法
                    )
            }
    )

使用注解实现二级缓存 @CacheNamespace()

是写在接口上面的

@CacheNamespace(blocking = true)//true表示开启二级缓存
public interface IDepartmentDao {

使用注解实现延时加载 借助于fetchType来实现

  @Results(
            id = "userMap",//这个就是唯一标识,后来直接使用这个标识就可以了
            value = {
                //主键id才有写true  不是逐渐的id就不要用写了
                @Result ( id = true , property = "userId",column = "id"),
                @Result ( property = "userName",column = "username"),
                    @Result ( property = "userAge",column = "age"),
                    @Result ( property = "userAddress",column = "address"),
                    @Result ( property = "userGender",column = "gender"),
                    @Result ( property = "userRid",column = "u_rid"),
                    @Result ( property = "userDid",column = "u_did"),
                    @Result( property = "department",//这是user类里面的department属性
                            column = "u_did",//这个是外键
                            //fetchType = FetchType.LAZY   Lazy就是开启懒加载 EAGER就是直接加载   
                            one = @One(select = "com.zhiyou100.dao.IDepartmentDao.queryDepartmentById",fetchType = FetchType.LAZY)//这个是一一映射该路径下的这个接口的方法
                    )

            }
    )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值