基于面向对象的思想,数据库的一个外键其实对应便是一个对象(因为一般来说,一张表就是一个类),而且在实际开发中,针对一个外键,我们总是希望能获得其更多的属性,这样可以让我们更方便的使用,也更加符合面向对象的思想,今天向大家展示的就是Mybatis中如何利用外键获得整个对象。
假设你现在正在写一个微博系统,你有两张表(microblog和user),microblog中有一个userId,是一个外键,对应user的主键id,因此当我们在取一个microblog的时候总是希望能一起取到其相应的user,因此micrblog类中需要有一个属性:
private User user;<span style="white-space:pre"> </span>//这个属性是新增的
private Integer userid;<span style="white-space:pre"> </span>//这个属性可以有
而在其对应的MyBatis的xml文件中,和userId列相关的属性有两个(当然,你也可以写成只有一个User,那么在取userid时只需要将格式更改为user.id,前段传到后台时其name也是这么写):
<result column="userId" property="userid" jdbcType="INTEGER" />
<association property="user" column="userId" select="getUser"/>
<!--而getUser的写法如下-->
<select id="getUser" parameterType="int" resultType="cn.cslg.microblog.PO.User">
SELECT id, name, password, email, activecode, state FROM User WHERE id=#{id}
</select>
这样写之后,每次你从数据库中查出一个Microblog,MyBatis都会自动地帮你查出一个其对应的user,这样做可以更加方便高效地为你的代码服务,希望大家能有所感悟。