一个作物品种的DNA序列有不同的记录,建立如下数据类型:
public class Variety { private Long id; private String varietyName; private List<Snp> snpList; }
public class Snp { private Long id; private String sequence; private String year; }
dao层接口:
List<Variety> queryVarieties();
mapper文件的配置:
技巧:
1.列设置别名(标红)
2.设置<resultMap>以及<collection>的使用
<mapper namespace="com.hzau.dao.VarietyDao"> <resultMap id="snp" type="Snp"> <result property="id" column="snp_id" jdbcType="INTEGER"/> <result property="sequence" column="sequence" jdbcType="VARCHAR"/> <result property="year" column="year" jdbcType="VARCHAR"/> </resultMap> <resultMap id="variety" type="Variety"> <result property="id" column="variety_id" jdbcType="INTEGER"/> <result property="varietyName" column="variety_name" jdbcType="VARCHAR"/> <collection property="snpList" resultMap="snp"/> </resultMap> <select id="queryVarieties" resultMap="variety"> select v.id variety_id,v.variety_name,s.id snp_id,s.sequence,s.year from variety v,snp_variety sv,snp s where v.id=sv.variety_id and sv.snp_id=s.id; </select> </mapper>
test测试:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:spring/spring-dao.xml"}) public class VarietyDaoTest { @Resource private VarietyDao varietyDao; @Test public void testQueryVarieties(){ List<Variety> list=varietyDao.queryVarieties(); for(Variety v:list){ System.out.print(v.getId()+"@"+v.getVarietyName()); List<Snp> snpList=v.getSnpList(); for(Snp snp:snpList){ System.out.print(snp.getId()); } System.out.println(); } } }
小结:记录一下,下次就不用再查一遍错误配置了。