在实际项目中,经常是关联表的查询,在Java实体对象中,一对多可以根据List和Set来实现,两者在mybitis中都是通过collection标签来配合来加以实现。
本节场景就是:首先根据用户 ID 读取一个用户信息,然后再读取这个用户所发布贴子(post)。
首先准备工作,在Mysql中创建两个表用户表tuser,帖子表tpost
tuser表的结构和数据
帖子表 tpost 的结构和数据
从上面表中数据可以看出,用户id为1的发表了2个帖子,这就是一对多关系的体现
1,创建工程并配置所需环境
在eclipse中创建动态web项目mybatisDemoA9,将MyBatis目录下lib目录下的jar包,核心包mybatis-3.5.6.jar以及 MySQL 数据库的驱动 jar 包(mysql-connector-java-5.1.38-bin.jar)复制到WebContent /WEB-INF/lib 目录中,选择这些包,右键添加到编译路径中。
2、创建表对应的 JavaBean 对象TUser,TPost
在src目录下添加com.yiibai.pojo包,在该包下创建TUser和TPost两个实体类对象
TUser代码如下:
package com.yiibai.pojo;
import java.util.List;
public class TUser {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public List<TPost> getPosts() {
return posts;
}
public void setPosts(List<TPost> posts) {
this.posts = posts;
}
private String username;
private String mobile;
private List<TPost> posts;
}
TPost代码如下:
package com.yiibai.pojo;
import java.util.Date;
public class TPost {
private int post_id;
public int getPost_id() {
return post_id;
}
public void setPost_id(int post_id) {
this.post_id = post_id;
}
public TUser getUser() {
return user;
}
public void setUser(TUser user) {
this.user = user;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
private TUser user;
private String title;
private String content;
private Date created;
}
3,添加配置文件tuser.xml
在com.yiibai.pojo包下添加TUser.xml文件,内容如下: