mybatis学习第3天

一:resultMap与resultType的用法

1、都是用于SQL的mapper映射;

2、resultMap用于自定的手动定义属性和结果集中的列名的映射;resultType用于属性和列名能自动一一对应的映射

3、二者都只反映一一对应的关系,并不返回值。

一对多关系:

需要多的一方记住少的一方;

在少的一方定义一个集合用于封装多的一方,接口和XML和一对一关系中的写法类似,只是SQL语句不通,需要用到连表查询。即用<resultMap>标签中的<collection >标签或

<association >标签

具体代码如下:

public interface IKeyMapper {
/**
* 为某一个锁批量添加钥匙
* @return
* @throws Exception
*/
public int batchSaveKeys(@Param("keys") List<KeyBean> keys)throws Exception;

/**
* 查询钥匙的同时,将锁也查出来
* @param id
* @return
*/
public KeyBean queryKeyBeanWithLockBean(int id);


}

<mapper namespace="com.lovo.my.dao.IKeyMapper">
<resultMap id="keyWithLockMap" type="keyBean">
<result property="id" column="id" javaType="java.lang.Integer"></result>
<result property="keyName" column="key_name" javaType="java.lang.String"></result>
<association property="lock" column="fk_lock_id" select="com.lovo.my.dao.ILockMapper.getLockBeanById" javaType="LockBean"/>
</resultMap>

<insert id="batchSaveKeys" parameterType="java.util.List">
insert into t_key(key_name,fk_lock_id) values
<foreach collection="keys" item="key" separator=",">
(#{key.keyName},#{key.lock.id})
</foreach>
</insert>

<select id="findKeyBeanByLockId" resultType="KeyBean">
select id as id,key_name as keyName from t_key where fk_lock_id = #{id}
</select>

<select id="queryKeyBeanWithLockBean" resultMap="keyWithLockMap">
select * from t_key where id = #{id}
</select>


</mapper>

多对多:

需要用到中间表,把多对多关系转换成一对多关系,特别的要用到子查询。

缓存:

分为事务缓存和应用缓存,又称一级缓存和二级缓存

事务缓存存在于应用缓存之中,一个应用缓存有多个事务缓存,当一级缓存使用完才使用二级缓存。默认情况下是没有开启缓存的,除了局部的 session 缓存,可以增强变现而且处理循环
依赖也是必须的。要开启二级缓存,你需要在你的 SQL 映射文件中添加一行:
<cache/>

需要用缓存的条件:

1、数据量少

2、低并发

3、不经常修改的数据




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值