mybatis 操作动态表+动态字段+存储过程

MyBatis动态表与存储过程
本文介绍使用MyBatis进行动态表操作的方法,并展示了如何通过存储过程实现动态字段更新,包括具体配置示例。

mybatis 操作动态表+动态字段+存储过程


存储过程 statementType="CALLABLE"

<!-- 计算金额存储过程-->
<update id="getCalcDistributorSettle" statementType="CALLABLE" parameterType="java.util.Map">
<![CDATA[
CALL procCalcDistributorSettle (#{ID},#{message})
]]>
</update>


动态表+动态字段配置 statementType="STATEMENT"

<updateid="updateMemberFiled"parameterType="map"statementType="STATEMENT">

<![CDATA[

update Member m
set
${filed_companyAddress} = '${companyAddress}'
where memberID = '${memberID}'

]]>

</update>

转载请注明出处:http://blog.youkuaiyun.com/yjflinchong/article/details/7758581

mybatis 操作动态表 存储过程
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。对于多表查询和懒加载功能,它是通过配置文件或注解的方式来实现的。 ### MyBatis 的多表查询 + 懒加载 #### 1. **多表查询** - 多表查询通常涉及到关联表的关系处理(如一对一、一对多或多对多)。MyBatis 提供了 `resultMap` 来描述如何将数据库结果集映射到 Java 对象。 - 常见的多表操作包括: - **一对一**:例如用户和详细信息之间的关系。 - **一对多**:例如订单和商品之间的关系。 - **多对多**:例如学生选课的情况。 配置示例(假设有一个用户表 User 和对应的地址表 Address): ```xml <resultMap id="UserAddressResultMap" type="com.example.User"> <id property="userId" column="user_id"/> <result property="username" column="username"/> <!-- 关联查询 --> <association property="address" javaType="com.example.Address"> <id property="addressId" column="address_id"/> <result property="city" column="city"/> </association> </resultMap> <select id="getUserWithAddress" resultMap="UserAddressResultMap"> SELECT u.user_id, u.username, a.address_id, a.city FROM user u LEFT JOIN address a ON u.address_id = a.address_id WHERE u.user_id = #{id} </select> ``` #### 2. **懒加载 (Lazy Loading)** - 默认情况下,MyBatis 使用的是立即加载策略,即当主表数据被查询出来时,所有相关的从表数据也会一起被加载进来。 - 如果希望延迟加载某些字段的数据(比如只在需要的时候才去查),可以开启懒加载模式。 开启步骤: - 修改全局配置文件 `mybatis-config.xml` 中启用懒加载设置: ```xml <settings> <setting name="lazyLoadingEnabled" value="true"/> <!-- 启用懒加载 --> <setting name="aggressiveLazyLoading" value="false"/> <!-- 只有访问属性时才会触发加载 --> </settings> ``` - 然后可以在 `resultMap` 或者方法上指定具体的懒加载规则。例如,在上面的例子中,如果想让 `address` 字段只有真正使用时才加载,则可以通过以下方式进行配置: ```xml <association property="address" javaType="com.example.Address" fetchType="LAZY"> <id property="addressId" column="address_id"/> <result property="city" column="city"/> </association> ``` #### 总结 通过合理的配置,你可以方便地完成复杂的多表联合查询,并且利用懒加载特性优化性能,避免不必要的数据预取。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值