mybatis中SQL语句运用总结
union 连接查询 连接两个表后会过滤掉重复的值
- <resultMap id="BaseResultMap" type="com.sprucetec.pay.etl.model.BillDetail">
- <id column="id" jdbcType="INTEGER" property="id"/>
- <result column="pay_order_no" jdbcType="VARCHAR" property="payOrderNo"/>
- <result column="pay_channel_id" jdbcType="TINYINT" property="payChannelId"/>
- <result column="pay_amount" jdbcType="INTEGER" property="payAmount"/>
- <result column="trans_date" jdbcType="INTEGER" property="transDate"/>
- <result column="trans_type" jdbcType="VARCHAR" property="transType"/>
- <result column="error_type" jdbcType="VARCHAR" property="errorType"/>
- <result column="is_check" jdbcType="TINYINT" property="isCheck"/>
- </resultMap>
<sql id="condition">
<if test="transType != null">
and trans_type = #{transType,jdbcType=TINYINT}
</if>
<if test="payChannelId != null">
and pay_channel_id = #{payChannelId,jdbcType=TINYINT}
</if>
</sql>
- <select id="queryList" parameterType="com.pay.BillCheckQuery" resultMap="BaseResultMap">
- select a.pay_order_no,a.trans_date,a.pay_amount,a.pay_channel_id,a.trans_type,a.error_type
- from (select pay_order_no,trans_date,pay_amount,pay_channel_id,trans_type,"无结果" as error_type
- from t_pay_core_order
- where 1 = 1 <include refid="condition"/>
- union
- select pay_order_no,trans_date,pay_amount,pay_channel_id,trans_type,"缺失" as error_type
- from t_pay_bill_file_detail
- where 1 = 1 <include refid="condition"/>
- ) as a
- order by a.trans_date desc
- limit #{pageSize} offset #{startRecord}
- </select>
union all 才可以将所有的值都查询出来,自己将所有的值查询完总是少,才发现是这个问题
- <select id="queryCountAndSum" parameterType="com.BillCheckQuery" resultMap="BaseResultMap">
- select sum(a.pay_amount) as trans_amount,count(1) as trans_num from
- (select pay_amount from t_pay_core_order
- where
- pay_channel_id = #{payChannelId,jdbcType=SMALLINT}and trans_date >= #{startTime,jdbcType=INTEGER}
- and trans_date <= #{endTime,jdbcType=INTEGER}union all
- select pay_amount from t_pay_bill_file_detail
- where
- pay_channel_id = #{payChannelId,jdbcType=SMALLINT}and trans_date >= #{startTime,jdbcType=INTEGER}
- and trans_date <= #{endTime,jdbcType=INTEGER}
- ) as a
- </select>
传入对象中有list需要使用时,需要进行遍历,我在in语句中使用
- <update id="updateByNum" parameterType="com.query.BillCheckQuery">
- update t_pay_core_order t1,t_pay_bill_file_detail t2
- set t1.is_check = 1,t2.is_check = 1
- WHERE
- t1.pay_order_no = t2.pay_order_no
- and t2.pay_order_no in
- <foreach item="payOrderNo" index="index" collection="orderlist" open="(" separator="," close=")">
- #{payOrderNo,jdbcType=VARCHAR}
- </foreach>
- and t1.trans_date >= #{startTime,jdbcType=INTEGER}
- and t1.trans_date <= #{endTime,jdbcType=INTEGER}</update>
或者直接在list中储存对象也可以遍历取出值
- <insert id="batchInsert" parameterType="java.util.List" >
- insert into t_pay_bill_file_detail (file_id,pay_order_no,third_trade_no,trans_type,
- pay_channel_id,pay_amount,trans_date)
- values
- <foreach collection="list" item="item" index="index" separator=",">
- (
- #{item.payOrderNo},
- #{item.transType},
- #{item.transDate}
- )
- </foreach>
- </insert>
ps:关注一下本人公众号,每周都有新更新哦!
mybatis中SQL语句运用总结的更多相关文章
- mybatis中sql语句传入多个参数方法
1 使用map <select id="selectRole" parameterType="map" resultType="RoleMap& ...
- MyBatis中sql语句
一.select <!-- 查询学生,根据id --> <select id="getStudent" parameterType="String&qu ...
- mybatis中sql语句必须用${}而不能不用#{}的情况
在mybatis中如果我们使用#{}的方式编写的sql时,#{} 对应的变量自动加上单引号 ' ' 例如: select * from #{param} 当我们给参数传入值为user时,他的sql是这 ...
- Mybatis 中 sql 语句的占位符 #{} 和 ${}
#{} 表示一个占位符号,通过 #{} 可以实现 preparedStatement 向占位符中设置值,自动进行 java 类型和 jdbc 类型转换.#{} 可以有效防止 sql注入. #{} ...
- Mybatis中sql语句中的in查询,一定要判断null的情况
不严谨的写法,可能会报错:in (),这种情况不符合mysql的语法. select from loanwhere LOAN_ID in <foreach item="item&quo ...
- mybatis中sql语句查询操作
动态sql where if where可以自动处理第一个and. <!-- 根据id查询用户信息 --> <!-- public User findUserById(int id) ...
- Mybatis中sql语句中的in查询,判断null和size为0的情况
不严谨的写法,可能会报错:in (),这种情况不符合SQL的语法,导致程序报错. 如果简单只做非空判断,这样也有可能会有问题:本来in一个空列表,应该是没有数据才对,却变成了获取全部数据! 所以一个比 ...
- mybatis 中sql语句传递多个参数
Available parameters are [2, 1, 0, param1, param2, param3] <select id="loginByTeacher" ...
- mybatis中sql语句的批量插入
<!-- 收件箱插入收件信息 --> <insert id="insertReceiveemail"> <!-- 生成一条U ...
随机推荐
- xshell5 可用注册码
101210-450789-147200(可以激活Xshell5,而且可以升级) 亲测可用 只能用于xshell5
- jquery使页面滚动到底部
function scrollToEnd(){//滚动到底部 var h = $(document).height()-$(window).height(); $(document).scrollTo ...
- iOS9 News 应用
iOS9 News 应用 iOS9 中国区虽然没有 News 应用,但最新的开发工具中是有的,以下是笔者截取的模拟器gif图,供君欣赏:
- 乘风破浪:LeetCode真题_019_Remove Nth Node From End of List
乘风破浪:LeetCode真题_019_Remove Nth Node From End of List 一.前言 这次总算到了链表的操作了,之后肯定会有排序算法,二叉树,排序树,图等等的操作,现在我 ...
- Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.
System.Data.OracleClient 已经过时了.微软不再支持它. 因此,我建议你为. NET 使用Oracle数据提供程序:ODP.Net. 你可以从以下位置下载: 版本:Release ...
- python28 excel读取模块xlrd
安装: pip install xlrd 简单使用: import xlrd book = xlrd.open_workbook(r'C:\Users\dinghanhua\Desktop\yqqap ...
- Phonegap 目录结构介绍
1.Src 该目录包含了所有用户要创建的 Java 源文件 2.gen 为开发工具自动创建 3.assets 目录 用于方一些资源文件 css js html 4.res 目录该目录包含了所有的资源文 ...
- Java虚拟机9:垃圾收集(GC)-4(垃圾收集器)
1.前言 垃圾收集器是前一章垃圾收集算法理论知识的具体实现了,不同虚拟机所提供的垃圾收集器可能会有很大差别,另外我们必须提前说明一个道理:没有最好的垃圾收集器,更加没有万能的收集器,只能选择对具体应用 ...
- cocos2d::CCFileUtils::sharedFileUtils()->getFileData(szFile, "r", &bufferSize) 不同平台返回值不一样
string pathKey = CCFileUtils::sharedFileUtils()->fullPathForFilename(fileName); unsigned char* pB ...
- Level/levelup-1-简介
https://github.com/Level/levelup A node.js wrapper for abstract-leveldown compliant stores 一个为实现抽象le ...