多对一 :

 SqlMapConfig.xml

<!--typeAliases标签用于起别名,这样package指定包中的实体类的类名可以在Mapper.xml的resultType中直接使用,无需写全限定类名-->
<typeAliases>
<package name="com.company.domain"/>
</typeAliases>
<environments default="mysql">
...
</environments>

   实体类

  public class Account {

    private Integer id;
private Integer uid;
private Double money;
/**
* 多对一实体属性
*/
private User user;
  setter和getter省略。。。
}


Mapper映射文件
<resultMap ></result>  
  <!--配置多对一实体属性,javaType属性如果未在配置文件中取别名,则需写全限定类名-->
    <association property="user" javaType="user">
<id property="id" column="id"></id>
<result property="username" column="username"></result>
<result property="birthday" column="birthday"></result>
<result property="sex" column="sex"></result>
<result property="address" column="address"></result>
</association>
</resultMap>
<select >

SELECT
a.id aid,
a.uid,
a.money,
u.*
FROM
USER u
RIGHT JOIN account a ON u.id = a.uid;

</select>


一对多 :
 实体类
public class User {
private Integer id;
private String username;
private Date birthday;
private Character sex;
private String address;

private List<Account> accounts;

   setter和getter省略。。。
}
  
 Mapper映射文件
  
<resultMap >
SELECT
u.*,
a.id aid,
a.uid,
a.money
FROM
USER u
LEFT JOIN account a ON u.id = a.uid;
</select>

多对多 :
  实体类  

public class User {
private Integer id;
private String username;
private Date birthday;
private Character sex;
private String address;

private List<Account> accounts;

private List<Role> roles;
}
  Mapper映射文件
  
<resultMap ></result>
</collection>
</resultMap>
<select >
SELECT
u.*,
r.id rid,
r.role_desc,
r.role_name
FROM
USER u
LEFT JOIN user_role ur ON u.id = ur.uid
LEFT JOIN role r ON ur.rid = r.id;
</select>


相关文章: