延迟加载 java_延迟加载

本文探讨了如何在Java中使用ORM(如Hibernate)实现一对一和一对多关系的懒加载,包括`User`和`Account`之间的关联,并展示了如何通过`IUserDao`和`IAccountDao`接口进行查询。重点讲解了如何在查询时避免立即加载所有数据,提高性能。
摘要由CSDN通过智能技术生成

## 添加配置开启懒加载

~~~

~~~

## 所需类

~~~

package com.like.dao;

import com.like.domain.Account;

import java.util.List;

public interface IAccountDao

{

List findAll();

List findByUserId(Integer id);

}

~~~

~~~

package com.like.dao;

import com.like.domain.User;

import java.util.List;

public interface IUserDao

{

List findAll();

User findById(Integer id);

}

~~~

~~~

package com.like.domain;

public class Account

{

private Integer id;

private Integer uid;

private Double money;

private User user;

@Override

public String toString()

{

return "Account{" +

"id=" + id +

", uid=" + uid +

", money=" + money +

", user=" + user +

'}';

}

public Integer getId()

{

return id;

}

public void setId(Integer id)

{

this.id = id;

}

public Integer getUid()

{

return uid;

}

public void setUid(Integer uid)

{

this.uid = uid;

}

public Double getMoney()

{

return money;

}

public void setMoney(Double money)

{

this.money = money;

}

public User getUser()

{

return user;

}

public void setUser(User user)

{

this.user = user;

}

}

~~~

~~~

package com.like.domain;

import java.io.Serializable;

import java.util.Date;

import java.util.List;

public class User implements Serializable

{

private Integer id;

private String username;

private Date birthday;

private String sex;

private String address;

private List accounts;

@Override

public String toString()

{

return "User{" +

"id=" + id +

", username='" + username + '\'' +

", birthday=" + birthday +

", sex='" + sex + '\'' +

", address='" + address + '\'' +

", accounts=" + accounts +

'}';

}

public Integer getId()

{

return id;

}

public void setId(Integer id)

{

this.id = id;

}

public String getUsername()

{

return username;

}

public void setUsername(String username)

{

this.username = username;

}

public Date getBirthday()

{

return birthday;

}

public void setBirthday(Date birthday)

{

this.birthday = birthday;

}

public String getSex()

{

return sex;

}

public void setSex(String sex)

{

this.sex = sex;

}

public String getAddress()

{

return address;

}

public void setAddress(String address)

{

this.address = address;

}

public List getAccounts()

{

return accounts;

}

public void setAccounts(List accounts)

{

this.accounts = accounts;

}

}

~~~

## 一对一延迟加载

~~~

select * from user where id = #{id}

~~~

~~~

column="uid" //必须写,指定根据id查询用户时所需要的参数

javaType="com.like.domain.User"

select="com.like.dao.IUserDao.findById"> //这里需要用到IUserDao根据ID查找的方法

select * from account;

~~~

## 一对多延迟加载

~~~

select * from account where uid = #{uid}

~~~

~~~

column="id" //这里是id

ofType="com.like.domain.Account"

select="com.like.dao.IAccountDao.findByUserId"> //这里是根据用户的id查找账户的方法

select * from user

~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值