MyBatis联表查询
一对一
一个账户对应一个用户:
账户实体:
public class Account {
private Integer id;
private Double money;
private User user;
}
用户实体:
public class User {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
private List<Account> accounts;
}
映射文件:
<?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.ttpfx.dao.AccountDao">
<resultMap id="accountUserMap" type="Account">
<id property="id" column="id"/>
<result property="money" column="money"/>
<association property="user" javaType="User">
<id property="id" column="uid"/>
<result property="username" column="username"/>
<result property="birthday" column="birthday"/>
<result property="sex" column="sex"/>
<result property="address" column="address"/>
</association>
</resultMap>
<select id="getAccountList" resultMap="accountUserMap">
select a.id, a.money, a.uid, u.username, u.birthday, u.sex, u.address from account as a left join user as u on a.uid=u.id
</select>
</mapper>
一对多
一个用户对应多个账户:
用户&账户实体类同上
映射文件:
<?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.ttpfx.dao.UserDao">
<resultMap id="userAccountMap" type="User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="birthday" column="birthday"/>
<result property="sex" column="sex"/>
<result property="address" column="address"/>
<collection property="accounts" ofType="Account">
<id property="id" column="aid"/>
<result property="money" column="money"/>
</collection>
</resultMap>
<select id="getUserList" resultMap="userAccountMap">
select u.id, u.username, u.birthday, u.sex, u.address, a.id as aid, a.money from user as u left join account as a on u.id = a.uid
</select>
</mapper>