myBatis里表与表之间的关系 多对一时候

来源:互联网 发布:社区矫正软件下载 编辑:程序博客网 时间:2024/05/17 00:03

<帖子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());
}


 



0 0
原创粉丝点击