哒哒哒哒哒哒~~~
1.在domain.User中添加从表实体的引用集合
代码如下:
package com.aynu.domain;
import javafx.scene.chart.PieChart;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
//一对多关系映射,主表实体应该包含从表实体的引用集合
private List<Account> accounts;
public List<Account> getAccounts() {
return accounts;
}
public void setAccounts(List<Account> accounts) {
this.accounts = accounts;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
}
}
2.在iuserdao.xml中配置相关映射
iuserdao.xml如下:
<?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.aynu.Dao.IUserDao">
<!--定义User的resultMap-->
<resultMap id="userAccountMap" type="com.aynu.domain.User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="address" column="address"/>
<result property="sex" column="sex"/>
<result property="birthday" column="birthday"/>
<!--配置user对象中Accounts集合的映射-->
<collection property="accounts" ofType="com.aynu.domain.Account">
<id property="id" column="aid"/>
<result property="uid" column="uid"/>
<result property="money" column="money"/>
</collection>
</resultMap>
<!--配置查询所有-->
<select id="findAll" resultMap="userAccountMap">
SELECT * FROM USER u LEFT OUTER JOIN account a ON u.id=a.uid
</select>
</mapper>
3.实现IUserDao接口
IUserDao接口如下:
package com.aynu.Dao;
import com.aynu.domain.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Queue;
/**
*
* 用户持久层接接口
*/
public interface IUserDao {
/**
* 查询所有操作,,同时获取到用户下所有账户的信息
* @return
*/
List<User> findAll();
}
5.测试结果如下
测试结果:
---------------每个用户信息-------------------
User{id=41, username='老王', birthday=Tue Feb 27 00:00:00 CST 2018, sex='男', address='北京'}
[]
---------------每个用户信息-------------------
User{id=42, username='小二王', birthday=Fri Mar 02 00:00:00 CST 2018, sex='女', address='北京金燕龙'}
[]
---------------每个用户信息-------------------
User{id=43, username='小二王', birthday=Sun Mar 04 00:00:00 CST 2018, sex='女', address='北京金燕龙'}
[]
---------------每个用户信息-------------------
User{id=45, username='传智播客', birthday=Sun Mar 04 00:00:00 CST 2018, sex='男', address='北京金燕龙'}
[Account{id=null, uid=45, money=1000.0}]
---------------每个用户信息-------------------
User{id=46, username='老王', birthday=Wed Mar 07 00:00:00 CST 2018, sex='女', address='北京'}
[Account{id=null, uid=46, money=1000.0}, Account{id=null, uid=46, money=2000.0}]
---------------每个用户信息-------------------
User{id=48, username='小马宝莉', birthday=Thu Mar 08 00:00:00 CST 2018, sex='女', address='北京修正'}
[]
---------------每个用户信息-------------------
User{id=51, username='myBatis UpdateUser', birthday=null, sex='女', address='北京市'}
[]
总结
用myBatis添加一个功能的顺序(小弟拙见)一般是
1、新建实体类
2、定义接口
3、配置xml文件,写sql语句、resultMap等(需要的话)
4、写测试类