一、基础
二、id、result
id,result标签,这两个标签的属性配置细节:<resultMap type="UtilRatePojo" id="utilrate"> <result property="utilrate" column="utilrate" javaType="float"/> <association property="cmp" javaType="CmpsPojo"> <id property="cid" column="cid"/> <result property="cmp" column="cmp"/> <result property="flr" column="floor"/> </association> </resultMap>
Columns: cid,cmp ,floor,utilrate Row1: 8,蒋震,四层西2,0.01 Row2: 11,蒋震图书馆,四层西1,0.01 Row3: 2 ,蒋震图书馆,二层,0.03 Row4: 6 ,蒋震,六层西2,0 Row5: 7 ,蒋震,六层西1,0 Row6: 3, 蒋震图书馆, 六层3,0.02
<resultMap type="LoginPojo" id="login"> <id property="lid" column="lid_db" javaType="java.lang.Integer"/> <result property="logname" column="logname_db" javaType="java.lang.String"/> <result property="password" column="password_db" javaType="java.lang.String"/> </resultMap>
public LoginPojo(int lid,String logname,String password){}这样mybatis直接将结果注入构造器,constructor的作用相当于
LoginPojo result=LoginPojo(lid_db,logname_db,password_db);constructor跟id,result的不同之处在于不用指明javabean和数据库中字段的相对应性,但是constructor中arg的顺序必须跟构造函数的顺序一致。
<select ....resultMap="utilrate"> select ci.cid as cid,ci.cmp as cmp,ci.floor as floor,cout(log.lid)as utilrate from cabinetinfo ci left join log on ci.cid=log.cid </select>cid,cmp,floor,utilrate分别对应于各个id和result标签的column,association的column是用来干什么的。其实这个时候association是不需要column属性的。
<resultMap type="UtilRatePojo" id="utilrate"> <id property="cid" column="cid" javaType="integer"/> <result property="utilrate" column="utilrate" javaType="float"/> <association property="cmp" javaType="CmpsPojo" resultMap="cmpMap"> </association> </resultMap> <resultMap id="cmpMap" type="CmpsPojo"> <id property="cid" column="cid"/> <result property="cmp" column="cmp"/> <result property="flr" column="floor"/> </resultMap>这种association也是不需要column属性的,查询出来的字段分别对应id和result标签就行了。
<resultMap type="UtilRatePojo" id="utilrate"> <id property="cid" column="cid" javaType="integer"/> <result property="utilrate" column="utilrate" javaType="float"/> <association property="cmp" javaType="CmpsPojo" colulmn="cid" select="selectCmp"> </association> </resultMap>select 语句:
<select ....resultMap="utilrate"> select cid ,cout(lid)as utilrate from log </select>
<select id="selectCmp" resultType="CmpsPojo"> select cid ,cmp,floor from cabinetinfo where cid=#{cid} </select>这个时候我感觉就要用到column属性了,association的column属性是查到的log数据库中的cid,这个cid作为select=“selectCmp”的传入参数传给select标签