mybatis----;一对一查询
一、实体类从表添加主表的对象(主表user,从表account)
public class Account implements Serializable { private Integer id; private Integer uid; private double money; //添加主表对象,并提供setter和getter方法 private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; }
二、进入sqlmapconfig配置一对一映射文件
<!-- 定义封装user和accout对象的resultmap--> <resultMap id="accountUserMap" type="account"> <!-- property:实体类id column:所对应的数据库中的id,注意起别名--> <id property="id" column="aid"></id> <result property="uid" column="uid"></result> <result property="money" column="money"></result> <!--定义一对一的关系映射,也就是封装user对象--> <association property="user" column="uid" javaType="user"> <id property="id" column="id"></id> <result property="username" column="username"></result> <result property="birthday" column="birthday"></result> <result property="address" column="address"></result> <result property="sex" column="sex"></result> </association> </resultMap> <!-- 查询所有 --> <select id="findAll" resultMap="accountUserMap" > SELECT u.*,a.id AS aid,a.MONEY,a.UID FROM USER u ,account a WHERE u.id = a.uid; </select>
三、测试
@Test public void testFinaAll(){ List<Account> accounts = accountDao.findAll(); for (Account account:accounts){ System.out.println("-------账户信息-------"); System.out.println(account); System.out.println(account.getUser()); } }
结果
-------账户信息------- Account{id=1, uid=46, money=1000.0} User{id=46, username='老王', address='北京', sex='男', birthday=Wed Mar 07 17:37:26 CST 2018} -------账户信息------- Account{id=2, uid=45, money=1000.0} User{id=45, username='传智播客', address='北京金燕龙', sex='男', birthday=Sun Mar 04 12:04:06 CST 2018} -------账户信息------- Account{id=3, uid=46, money=2000.0} User{id=46, username='老王', address='北京', sex='男', birthday=Wed Mar 07 17:37:26 CST 2018}