<帖子N> 对 <分类1>
1.所实现的映射关系是:在帖子分类的实体对象里包含的是帖子的实体对象的集合。
1)首先建立实体关系的映射,那么就需要在分类的实体里加入帖子的集合。代码如下:
package com.model;import java.util.List;
//分类
public class Sort {
private Integer sortId;//分类编号
private List<Theme> themes;
public List<Theme> getThemes() {
return themes;
}
public void setThemes(List<Theme> themes) {
this.themes = themes;
}
public Integer getSortId() {
return sortId;
}
public void setSortId(Integer sortId) {
this.sortId = sortId;
}
public String getSortName() {
return sortName;
}
public void setSortName(String sortName) {
this.sortName = sortName;
}
private String sortName;//分类名称
}
2)创建一个TypeInfoMapper的实现接口:
package com.dao.imp;import com.dao.IDaoBBS;
import com.model.Sort;
public interface SortMapper extends IDaoBBS<Sort>{
}
3)编写相应的sql配置文件:SortMapper.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.dao.imp.SortMapper">
<select id="getModel" resultMap="SortResult" parameterType="java.lang.Integer">
select s.*,h.*,u.*
from Sort s inner join Theme h
on s.sortId=h.sortId
Left join userInfo u
on h.userId=u.userId
where s.sortId=#{id}
</select>
<resultMap type="com.model.Sort" id="SortResult">
<result column="sortId" property="sortId"></result>
<result column="sortName" property="sortName"></result>
<collection property="themes" ofType="com.model.Theme" resultMap="com.dao.imp.ThemeMapper.ThemeResult">
</collection>
</resultMap>
</mapper>
注意:collection表示的是集合的数据。property表示所对应的集合的属性名。
ofType表示集合里的数据的类型。resultMap表示的是调用的是其它的结果映射集。
由于该结果映射集不在同一个文件下,那么就需要引入其它文件下的结果集。
其它结果集的命名空间+结果集的名称。比如:
com.dao.imp.ThemeMapper.ThemeResult
测试:
public static void main(String[] args) {
// TODO Auto-generated method stub
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
SortMapper sortMapper=sqlSession.getMapper(SortMapper.class);
Sort s= sortMapper.getModel(1);
System.out.println("分类名称:"+s.getSortName());
List<Theme> list= s.getThemes();
for(Theme i:list){
System.out.println("帖子名称:"+i.getThemeName());
System.out.println("用户名:"+i.getThemeUserInfo().getUserName());
}