mybatis 总结
来源:互联网 发布:js删除数组中元素 编辑:程序博客网 时间:2024/06/05 16:07
前面写的关于 mybatis 的,进行总结的文章
include
主要针对 mybatis 中 sql 语句的复用,可以减少代码量,例如下:
<sql id="insertIntoHoldSql">INSERT INTO tb_day_hold (…… )VALUES (……)</sql><insert id="addOrUpdateOne_addAmount" parameterType="……Domain"><include refid="insertIntoHoldSql"></include><![CDATA[ON DUPLICATE KEY UPDATEamount = amount + VALUES(amount);]]></insert>组合之后,addOrUpdateOne_addAmount 的 sql 语句,就是 insert into …… ON DUPLICATE KEY UPDATE ……两者拼组之后的 SQL 语句
choose
没见着 mybatis 中,有 if else 的使用,而 choose when 可以替代这个功能,如下:
<choose><when test="…… ">……</when><when test="…… ">……</when><otherwise>……</otherwise></choose>
if
if 多用于查询条件的拼组,如下:
WHERE …… <if test="……"> …… </if> <if test="…… "> …… </if>
foreach
foreach 一般循环 mybatis 中传递过来的 list ,进行逐条操作,如下:
<foreach collection="list" index="index" item="item">……#{item.firm_account } ,……;</foreach>
实例
以下是我们项目,真实使用的代码的实例,已经过测试,如下:
<?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" ><mapper namespace="com.hundsun.cloudtrade.match.dao.IDayHoldDao"><sql id="insertIntoHoldSql">INSERT INTO tb_day_hold (firm_account ,seat_no ,stock_account ,exchange_type ,stock_name ,stock_code ,amount ,market_value ,position_str )VALUES (#{firm_account } ,#{seat_no } ,#{stock_account } ,#{exchange_type } ,#{stock_name } ,#{stock_code } ,<choose><when test="occur_amount != null and occur_amount != '' ">#{occur_amount } , </when><when test="amount != null and amount != '' ">#{amount } , </when><otherwise>0,</otherwise></choose>#{market_value } ,#{position_str } )</sql><insert id="addOrUpdateOne_addAmount" parameterType="com.hundsun.cloudtrade.match.domain.DayHoldDomain"><include refid="insertIntoHoldSql"></include><![CDATA[ON DUPLICATE KEY UPDATEamount = amount + VALUES(amount);]]></insert><insert id="addOrUpdateOne_amount" parameterType="com.hundsun.cloudtrade.match.domain.DayHoldDomain"><include refid="insertIntoHoldSql"></include><![CDATA[ON DUPLICATE KEY UPDATEamount = VALUES(amount) , seat_no = VALUES(seat_no);]]></insert><insert id="batchInsert" parameterType="java.util.List"><foreach collection="list" index="index" item="item">INSERT INTO tb_day_hold (firm_account ,seat_no ,stock_account ,exchange_type ,stock_name ,stock_code ,amount ,market_value ,position_str )VALUES (#{item.firm_account } ,#{item.seat_no } ,#{item.stock_account } ,#{item.exchange_type } ,#{item.stock_name } ,#{item.stock_code } ,#{item.amount } , #{item.market_value } ,#{item.position_str } )ON DUPLICATE KEY UPDATEamount = VALUES(amount) , seat_no = VALUES(seat_no);</foreach></insert><select id="qryMultiRecords"parameterType="com.hundsun.cloudtrade.match.dto.req.QryHoldReq"resultType="com.hundsun.cloudtrade.match.domain.DayHoldDomain">SELECT firm_account ,seat_no ,stock_account ,exchange_type ,stock_name ,stock_code ,amount ,market_value ,position_str <choose><!-- 查询历史持仓表 --> <when test="hold_date != null and hold_date != '' "> ,hold_date FROM tb_history_hold </when> <!-- 查询当日持仓 --> <otherwise> ,'' hold_date FROM tb_day_hold </otherwise> </choose> WHERE firm_account = #{firm_account} <if test="seat_no != null and seat_no != '' "> AND seat_no = #{seat_no} </if> <if test="exchange_type != null and exchange_type != '' "> AND exchange_type = #{exchange_type} </if> <if test="stock_account != null and stock_account != '' "> AND stock_account = #{stock_account} </if> <if test="position_str != null and position_str != '' "> AND position_str = #{position_str} </if> ORDER BY stock_code DESC<if test="req_number != null and req_number != '' "> LIMIT 0,#{req_number} </if> ;</select><delete id="delMultiRecords" parameterType="com.hundsun.cloudtrade.match.dto.req.DelHoldsReq"><![CDATA[DELETE FROM tb_history_hold WHERE firm_account = #{firm_account};DELETE FROM tb_day_hold WHERE firm_account = #{firm_account};]]></delete></mapper>
以上
阅读全文
0 0
- mybatis总结
- MyBatis总结
- MyBatis 总结
- mybatis 总结
- mybatis--总结
- Mybatis总结
- mybatis 总结
- mybatis总结
- mybatis总结
- mybatis总结
- mybatis总结
- mybatis总结
- MyBatis总结
- mybatis总结
- Mybatis总结
- Mybatis 总结
- mybatis总结
- mybatis 总结
- spark集群8080端口页面只显示master的情况
- 基于LOOK磁盘调度算法写一个电梯运行模拟器
- Oracle工具函数总结
- kaldi问题:queue.pl: error submitting jobs to queue
- linux 安装telnet服务
- mybatis 总结
- View的绘制流程
- Android Binder 机制初步学习 笔记(四,完结)—— Binder 简单应用示例
- Notification 的 Flag 设置
- 【OpenCV入门教程】图像加噪
- 自动生成代码类
- 谷歌的AI码农写出了比真码农还有效的机器学习代码!
- 远程连接mysql
- 我和这对最近融资2.32亿美元的创业夫妻档聊了聊 ...