java对象关系映射_Mybatis中对象关系映射

在实际开发中,实体类之间有一对一、一对多、多对多的关系,所以需要正确配置它们对应关系,Mybatis通过配置文件能够从数据库中获取列数据后自动封装成对象。

如:一个订单Orders类对应一个用户User类,一个User类对应多个Orders类。

Orders.java

packagecn.itheima.pojo;importjava.util.Date;public classOrders {privateInteger id;privateInteger userId;privateString number;privateDate createtime;privateString note;private User user; //一个订单对应一个用户

publicInteger getId() {returnid;

}public voidsetId(Integer id) {this.id =id;

}publicInteger getUserId() {returnuserId;

}public voidsetUserId(Integer userId) {this.userId =userId;

}publicString getNumber() {returnnumber;

}public voidsetNumber(String number) {this.number = number == null ? null: number.trim();

}publicDate getCreatetime() {returncreatetime;

}public voidsetCreatetime(Date createtime) {this.createtime =createtime;

}publicString getNote() {returnnote;

}public voidsetNote(String note) {this.note = note == null ? null: note.trim();

}publicUser getUser() {returnuser;

}public voidsetUser(User user) {this.user =user;

}

}

User.java

packagecn.itheima.pojo;importjava.util.Date;importjava.util.List;public classUser {private intid;private String username;//用户姓名

private String sex;//性别

private Date birthday;//生日

private String address;//地址

private List ordersList; //一个用户对应多个订单

public ListgetOrdersList() {returnordersList;

}public void setOrdersList(ListordersList) {this.ordersList =ordersList;

}public intgetId() {returnid;

}public void setId(intid) {this.id =id;

}publicString getUsername() {returnusername;

}public voidsetUsername(String username) {this.username =username;

}publicString getSex() {returnsex;

}public voidsetSex(String i) {this.sex =i;

}publicDate getBirthday() {returnbirthday;

}public voidsetBirthday(Date birthday) {this.birthday =birthday;

}publicString getAddress() {returnaddress;

}public voidsetAddress(String address) {this.address =address;

}

@OverridepublicString toString() {return "User [id=" + id + ", username=" + username + ", sex=" +sex+ ", birthday=" + birthday + ", address=" + address + "]";

}

}

一、一对一映射

1、 在UserMapper.xml中配置Orders和User的一对一映射关系

SELECT a.*,b.id uid,username,birthday,sex,address

FROM orders a,user b

WHERE a.user_id=b.id

2、在UserMapper.java中编写接口

List findOrdersAndUser2();

3、测试

@Testpublic void testFindOrdersAndUser2() throwsException {

SqlSession session=sqlSessionFactory.openSession();

UserMapper userMapper= session.getMapper(UserMapper.class);

List list =userMapper.findOrdersAndUser2();

System.out.println(list);

}

二、一对多映射

1、在UserMapper.xml中配置User和Orders的一对多关系

SELECT a.*,b.id oid,user_id,number,createtime

FROM user a,orders b WHERE a.id=b.user_id

2、在UserMapper.java中编写接口

List findUserAndOrders();

3、测试

@Testpublic void testFindUserAndOrders() throwsException {

SqlSession session=sqlSessionFactory.openSession();

UserMapper userMapper= session.getMapper(UserMapper.class);

List list =userMapper.findUserAndOrders();

System.out.println(list);

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值