<?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">
<!-- 这里要写IUserDao的路径哦 -->
<mapper namespace="com.qianfeng.one2one.IPersonDao">
<!-- type就是,在mybatis里起的别名,实际上是这个实体类额类名+包名
这个id就是起的映射的名字,随便起也无所谓,只要后面的增删改查用到的话,吧名字写一样就ok
id主键,column数据库对应字段名
-->
<resultMap type="Person" id="personMap">
<id property="pid" column="pid"/>
<!-- 其他字段的映射关系 -->
<result property="pname" column="pname"/>
<!--
实际上这里还是属性的映射,和上面哪些result是一样的东西,不过就是个嵌套查询,
property是要传来的参数,这个参数是实体类中必须要有的,现在这个card就是实体类中的
javaType就是刚才那个property的类型,类型!懂么!就好比集合的类型是java.util.ArrayList懂?
现在这玩意就是card属性的,实体类的位置,ok?
column就是在数据库里的字段名,不对,应该是关联的字段名吧,两个表之间的关联,
就是这个cid,会传给下面的select对应的方法中,这个cid就是下面的select需要的参数!
fetchType 是否懒加载,默认lazy懒加载,eager 非懒加载,这里就不用懒加载了
嵌套查询就会有必定select
-->
<association property="card"
javaType="com.qianfeng.one2one.Card"
column="cid"
select="com.qianfeng.one2one.ICardDao.findById"
fetchType="eager"
></association>
</resultMap>
<resultMap type="Person" id="personMap2">
<id property="pid" column="pid"/>
<!-- 其他字段的映射关系 -->
<result property="pname" column="pname"/>
<!-- 嵌套结果查询 自己手动写sql语句,多表查询,一句话全部搞定
resultMap 指定如何处理关联的数据, 命名空间+resultMap的id
这个就是指向了cardMapper.xml里面的resultMap映射了,直接找到里面的Card试题和数据库的映射关洗,
这个方法比较快捷吧,也推荐这种用发吧,这个就只用了一句sql,简单!
-->
<association property="card" resultMap="com.qianfeng.one2one.ICardDao.cardMap"></association>
</resultMap>
<select id="findById" parameterType="int" resultMap="personMap">
select * from t_person where pid=#{id}
</select>
<select id="findById2" parameterType="int" resultMap="personMap2">
select * from t_person p
inner join t_card c
on p.cid=c.cid
where p.pid=#{pid}
</select>
</mapper>```
详细的说明都写了,自己看看吧,配合经一个one2one.CardMapper.xml看
网友评论