mybatis中的映射关系
1、mybatis中使用的代理模式,dao接口与mapper文件的关系,就是代理关系,dao接口内只有方法,而具体的实现依赖mapper文件
例如:dao接口内的方法: public List findAll();
mapper内的实现:
2、id对应的是接口内的方法 ,resultType 返回值类型,resultMap返回的是集合
<select id="findAll" resultMap="profitMap"> select p.storePhone,p.number,s.id,s.name,s.price,s.percent from profit p,seed s where p.seedId=s.id; </select>
<resultMap type="Profit" id="profitMap"> <result column="storePhone" property="storePhone"/> <result column="number" property="number"/>
3、一对一关系对应使用association,property对应实体对象的属性,javatypejava类型,column 对应的一对一的一个键值;
<association property="seed" javaType="Seed" column="seedId"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="price" property="price"/> <result column="percent" property="percent"/> </association> </resultMap>
1、也可以这样
<association property="seed" column="seedId"> select="包路径.SeedMapper.id属性" </resultMap>
2、property属性代表映射带pojo属性上,select配置是命名空间+sql id的形式,这样便可以指向mapper的sql,mybatis就会通过对应的sql将数据查询出来了,column代表的sql列,用作参数传递给select属性指定的sql,如果有多个参数可以使用逗号隔开;
3、<discriminator>元素,鉴别器,
<discriminator javaType="int" column="flag"> <case value="0" resultType="seed"></case> <case value="1" resultType="seed2"></case> </discriminator>
4、column代表的是使用那个字段进行鉴别,这里使用的flag进行鉴别;他的子元素case用于区分,类似与java中的switch ... case ... 语句