一對多表關係展示
一對多和多對一的代碼相差不遠,就是在dao層接口上的代碼有一點點差別
一對多dao層接口
package com.one2more.dao;
import com.one2more.domain.Userss;
import java.util.List;
public interface IUserDAO {
public List<Userss> findByOne2More();
}
而多對一dao層接口代碼如下
package com.more2one.dao;
import com.more2one.domain.Accounts;
import java.util.List;
public interface IUserDAO {
public List<Accounts> findByMore2One();
}
在這裏不多過多的展示
之後讀者可以在往回看一對多的入門案例,做對比
實體類
user
package com.one2more.domain;
import java.io.Serializable;
import java.util.List;
public class Userss implements Serializable {
private int id;
private String name;
private String pwd;
private List<Account> accountList;
public List<Account> getAccountList() {
return accountList;
}
public void setAccountList(List<Account> accountList) {
this.accountList = accountList;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "Userss{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
", accountList=" + (accountList!=null?accountList.toString():null) +
'}';
}
}
account
package com.one2more.domain;
import java.io.Serializable;
public class Account implements Serializable {
private int id;
private int uid;
private double money;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
@Override
public String toString() {
return "Account{" +
"id=" + id +
", uid=" + uid +
", money=" + money +
'}';
}
}
主配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="jdbc.properties"></properties>
<typeAliases>
<package name="com.one2more.dao"></package>
<package name="com.one2more.domain"></package>
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${db.driver}"></property>
<property name="url" value="${db.url}"></property>
<property name="username" value="${db.username}"></property>
<property name="password" value="${db.password}"></property>
</dataSource>
</environment>
</environments>
<mappers>
<package name="com.one2more.dao"></package>
</mappers>
</configuration>
映射配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.one2more.dao.IUserDAO">
<resultMap id="usermap" type="Userss">
<id column="id" property="id"></id>
<result property="name" column="name"></result>
<result property="pwd" column="pwd"></result>
<collection property="accountList" ofType="Account">
<id property="id" column="aid"></id>
<result property="uid" column="uid"></result>
<result property="money" column="money"></result>
</collection>
</resultMap>
<select id="findByOne2More" resultMap="usermap">
select user.*,a.id aid,a.uid,a.money from user left join account a on user.id = a.uid
</select>
</mapper>
測試類
import com.one2more.dao.IUserDAO;
import com.one2more.domain.Userss;
import com.one2more.utils.MySqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class One2MoreTest {
@Test
public void test(){
SqlSession sqlSession = MySqlSessionUtil.getSqlSession();
IUserDAO mapper = sqlSession.getMapper(IUserDAO.class);
List<Userss> byMore2One = mapper.findByOne2More();
for (Userss userss : byMore2One) {
System.out.println(userss);
}
}
}
測試展示
代碼鏈接
百度網盤鏈接
鏈接:https://pan.baidu.com/s/1jyjU2NsObd1QmXFXMQB6sw
提取碼:33n7
git鏈接
https://github.com/cxpcxpcxp/csdn_case_mybatis