mybatis mysql 多表 联合查询_mybatis注解方式一对多的多表联合查询的实现

mybatis注解方式一对多的多表联合查询的实现

需求:实现查出所有的用户并且显示每个用户下的所有账户信息

准备实体类User2 和Account上代码:

package com.test.domain;

import java.util.Date;

import java.util.List;

/**

* @author:shi jiaojie

* @date:2019/6/26 20:15

* @description:

*/

public class User2 {

private Integer userid ;

private String userusername ;

private String usersex ;

private Date userbirthday ;

private String useraddress;

private Listaccounts;

public Integer getUserid() {

return userid;

}

public void setUserid(Integer userid) {

this.userid = userid;

}

public String getUserusername() {

return userusername;

}

public void setUserusername(String userusername) {

this.userusername = userusername;

}

public String getUsersex() {

return usersex;

}

public void setUsersex(String usersex) {

this.usersex = usersex;

}

public Date getUserbirthday() {

return userbirthday;

}

public void setUserbirthday(Date userbirthday) {

this.userbirthday = userbirthday;

}

public String getUseraddress() {

return useraddress;

}

public void setUseraddress(String useraddress) {

this.useraddress = useraddress;

}

public ListgetAccounts() {

return accounts;

}

public void setAccounts(Listaccounts) {

this.accounts = accounts;

}

@Override

public String toString() {

return "User2{" +

"userid=" + userid +

", userusername='" + userusername + '\'' +

", usersex='" + usersex + '\'' +

", userbirthday=" + userbirthday +

", useraddress='" + useraddress + '\'' +

", accounts=" + accounts +

'}';

}

}

Account的实体类:

package com.test.domain;

/**

* @author:shi jiaojie

* @date:2019/6/26 20:15

* @description:

*/

public class Account {

private Integer id ;

private Integer uid ;

private Double money;

private 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;

}

@Override

public String toString() {

return "Account{" +

"id=" + id +

", uid=" + uid +

", money=" + money +

", user=" + user +

'}';

}

}

User2 的dao层代码:

package com.test.dao;

import com.test.domain.User;

import com.test.domain.User2;

import org.apache.ibatis.annotations.*;

import org.apache.ibatis.mapping.FetchType;

import java.util.List;

/**

* @author:shi jiaojie

* @date:2019/6/26 20:22

* @description:

*/

public interface UserDao2 {

public ListfindAll();

//查询所有的用户记录并且显示该用户下的所有账号

@Select("select * from user2 ")

@Results(id = "userAccountMap",value = {

@Result(id =true,property = "userid",column = "id"),

@Result(property = "userusername",column = "username"),

@Result(property = "usersex",column = "sex"),

@Result(property = "userbirthday",column = "birthday"),

@Result(property = "useraddress",column = "address"),

@Result(property = "accounts" ,column = "id",many = @Many(select="com.test.dao.AccountDao.findByUid",fetchType = FetchType.LAZY))

})

public ListfindAll2();

}

Account的dao层代码:

package com.test.dao;

import com.test.domain.Account;

import org.apache.ibatis.annotations.Select;

import java.util.List;

/**

* @author:shi jiaojie

* @date:2019/6/26 20:22

* @description:

*/

public interface AccountDao {

//通过uid查询用户

@Select("select * from account2 where uid=#{uid}")

public ListfindByUid(int uid);

}

开始测试了上代码:

//查询所有的用户并且显示用户的所有账号信息

@Test

public void findAl2() {

Listlist = mapper.findAll2();

for (User2 user2 : list) {

System.out.println(user2);

}

}

最后的运行结果:

8c62e3e36a34001666e5ec7ee5203d0d.png谢谢浏览,如有问题欢迎在下面提问交流。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值