问题总结:在Mybatis中使用 mysql 的自定义变量 select @i:=0.00

今天在mybatis中写了一段 mysql  用于计算累加,结果发现在数据库管理工具上直接执行正常的语句到了程序中,直接出不了数了。一开始我怀疑是不是mybatis(我用的版本是3)不支持 mysql 的自定义变量的,所以一直在查相应的解决方法。但是!

一开始我方向就错了,mybatis 是支持 自定义变量的,问题出在  字符集上,因为我传入的参数有些是中文,而我在数据库链接又没有设置好字符集,所以导致每次都查不到数据。

<select id="getData" parameterType="map" resultType="java.util.Map">
	<![CDATA[
          select concat(ta.time, ':00') as time,ta.aaa,ta.bbb,(@curVal := @curVal + ta.aaa- ta.bbb) as sum
          from (select cc.time, SUM(cc.aaa) as aaa, SUM(cc.bbb) as bbb
                  from table_${table} cc
                  where
                      cc.code= #{code}
                      and cc.date= #{date}          
            group by cc.time
      ) ta ,(select @curVal:=0.00) r
      ]]>
</select>

 在编写数据库信息的时候要把字符集的参数带上,并且以 & 号隔开

spring.datasource.url=jdbc:mysql://xxxx.xxxx:3306/database?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=xxxx
spring.datasource.password=xxxx
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值