学习最后一种封装方式 --association标签
association标签
老套路第1步
/Mybatis02/src/com/chen/dao/GoodsDao2.java
//association 标签来制定关联的 JavaBean的封装方式
public List<GoodsInfo> selectAll4();
老套路第2步
/Mybatis02/config/mappers/GoodsInfoMapper.xml
<select id="selectAll4" resultMap="love">
select g.id id,g.name name ,n.goods_id goods_id , n.from from goods g,nation n WHERE g.id = n.goods_id
</select>
<resultMap type="com.chen.GoodsInfo" id="love">
<!-- 下面这个id标签表示配置主键的封装格式 -->
<!-- 记住,下面column的属性一定写的是上面SQL查询语句的别名。别名。别名 -->
<id column="id" property="e_id" />
<result column="name" property="e_name" />
<!-- 下面的association标签中的property属性对应的你要配置的 实力类的对象名称
(还记得在GoodsInfo类里声明了个private Nation nati吗)
然后下面javaType对应的是对象nati它所指定的类名。(既Nation类)-->
<association property="nati" javaType="com.chen.Nation">
<!-- 现在开始指定里面数据的封装方式
注:下面column的是查询语句的别名,properyt是Nation类里的字段名。刚好起的一样而已-->
<result column="goods_id" property="goods_id"/>
<result column="from" property="from"/>
</association>
</resultMap>
老套路第3步
/Mybatis02/src/test/Start2.java
public class Start2 {
public static void main(String[] args) throws IOException {
String resource = "mybatis-conf.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//true表示自动提交。否则需要使用commit方法才会提交。默认是false
SqlSession session = sqlSessionFactory.openSession();
//拿到接口的代理对象
GoodsDao2 dao=session.getMapper(GoodsDao2.class);
List<GoodsInfo> list = dao.selectAll4();
System.out.println(list);
//如果上面不设置自动提交表单,那么就需要commit方法
session.commit();
}
}
点击运行
[GoodsInfo [e_id=1, e_name=大米面膜, nati=Nation [goods_id=1, from=香港]], GoodsInfo [e_id=2, e_name=泰国纳兰足贴, nati=Nation [goods_id=2, from=日本]], GoodsInfo [e_id=3, e_name=Mellin菊花晶, nati=Nation [goods_id=3, from=泰>
国]]]
证明这个associion标签也能完成数据封装 。。。 成功
感觉这个和上篇文章的内容那种数据封装 差不多一样。 感觉这个association标签好像还麻烦点。
那么问题来了:这个association标签有哪些好处?