SQL映射文件

1. MyBatis框架的条件映射

MyBatis框架允许在映射文件中使用动态SQL,以根据不同的条件生成不同的SQL语句。这主要通过<if><choose><when><otherwise><where><set>等元素实现。

示例
<select id="selectUsersByCondition" resultType="User">
SELECT * FROM user
<where>
<if test="name != null and name != ''">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>

在上面的示例中,<where>元素会智能地处理SQL语句中的ANDOR,当<where>元素内的条件都不满足时,它会智能地省略WHERE子句。<if>元素用于判断传入的参数是否满足某个条件,如果满足则包含相应的SQL片段。

2. MyBatis框架的结果映射

结果映射是MyBatis框架中非常重要的一部分,它负责将数据库查询结果映射到Java对象上。MyBatis支持简单的类型映射(如int、String等)、复杂类型映射(如JavaBean)以及集合映射(如List、Set等)。

示例
<resultMap id="userResultMap" type="User">
<id property="id" column="user_id"/>
<result property="name" column="user_name"/>
<result property="age" column="user_age"/>
<association property="address" column="address_id" javaType="Address" foreignColumn="id" resultMap="addressResultMap"/>
</resultMap>
<select id="selectUserWithAddress" resultMap="userResultMap">
SELECT * FROM user u
LEFT JOIN address a ON u.address_id = a.id
WHERE u.id = #{userId}
</select>

在上面的示例中,<resultMap>元素定义了一个结果映射,将数据库中的列映射到Java对象的属性上。<association>元素用于处理关联查询,它指定了如何加载关联对象(如Address)。

3. MyBatis框架的增删改查

MyBatis框架支持基本的CRUD(增删改查)操作。

示例
  • 查询(使用<select>元素)

<select id="selectUserById" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select>
  • 插入(使用<insert>元素)

<insert id="insertUser" parameterType="User">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>
  • 更新(使用<update>元素)

<update id="updateUser" parameterType="User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
  • 删除(使用<delete>元素)

<delete id="deleteUser" parameterType="int">
DELETE FROM user WHERE id = #{id}
</delete>

4. MyBatis框架的缓存

MyBatis提供了两级缓存:一级缓存(SqlSession级别的缓存)和二级缓存(Mapper级别的缓存)。

  • 一级缓存:默认开启,每个SqlSession都有一个一级缓存。当执行相同的SQL语句时,会先从一级缓存中查找结果,如果找不到再从数据库中查询。当SqlSession关闭或清理时,一级缓存将被清空。
  • 二级缓存:需要手动开启和配置,通常用于多个SqlSession之间共享数据。二级缓存是基于Mapper的,不同的Mapper使用不同的二级缓存。当某个Mapper执行查询操作时,会先从二级缓存中查找结果,如果找不到再从数据库中查询,并将结果存入二级缓存。
示例(二级缓存配置)

mybatis-config.xml中配置全局的二级缓存:

 
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>

在Mapper XML文件中启用二级缓存:

<mapper namespace="com.example.mapper.UserMapper">
<cache/>
<!-- 其他SQL语句 -->
</mapper>

注意:使用二级缓存时,需要确保查询的SQL语句和参数完全相同,否则无法从二级缓存中获取结果。此外,对于频繁更新的数据,不建议使用二级缓存

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值