mybatis中支持mysql中的变量吗?

@rownum这样的变量是写在sql里面的不是存储过程里面,在mybatis的mapper.xml里面,应该怎么写?
加了CDATA也不行

mysql连接url + allowMultiQueries=true

jdbc:mysql://localhost:3306/DBS?allowMultiQueries=true

MyBatis MySql -Stack Overflow

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-01-26
以前Mysql官方网站上有一个图形软件叫“MySQL GUI Tools”,它里面有一个工具“MySQLMigrationTool”就是干这个活的。
MySQL GUI Tools现在的oracle官方网站上已经找不到了,但它很有名,其它一些网站上也有下的。本回答被网友采纳
第2个回答  2018-05-08
支持
SET @ROW_NUMBER:=0,@median_group:='';
SELECT
<if test="intervalTime == 'day' ">
a.year,a.month,a.day,
</if>
<if test="intervalTime == 'month' ">
a.year,a.month,
</if>
<if test="intervalTime == 'year' ">
a.year,
</if>
ROUND(AVG(avgResponseTime)) AS median
FROM(
SELECT @ROW_NUMBER:=CASE
<if test="intervalTime == 'day' ">
WHEN @median_group = a.day
</if>
<if test="intervalTime == 'month' ">
WHEN @median_group = a.month
</if>
<if test="intervalTime == 'year' ">
WHEN @median_group = a.year
</if>
THEN @ROW_NUMBER + 1
ELSE 1
END AS count_of_group,
<if test="intervalTime == 'day' ">
@median_group:=a.day AS median_group,
</if>
<if test="intervalTime == 'month' ">
@median_group:=a.month AS median_group,
</if>
<if test="intervalTime == 'year' ">
@median_group:=a.year AS median_group,
</if>
a.*,b.total_of_group
FROM (
SELECT a.year,a.month,a.day,a.avgResponseTime
FROM analysis_base_service_invoke_by_hour AS a
WHERE createTime BETWEEN #{startTime} AND #{endTime}
AND deleteFlag=0
AND serviceId=#{serviceId}
<if test="userId != null">
AND userId=#{userId}
</if>
<if test="intervalTime == 'day' ">
ORDER BY a.year,a.month,a.day,a.avgResponseTime ASC
</if>
<if test="intervalTime == 'month' ">
ORDER BY a.year,a.month,a.avgResponseTime ASC
</if>
<if test="intervalTime == 'year' ">
ORDER BY a.year,a.avgResponseTime ASC
</if>
) AS a,
(
SELECT COUNT(*) AS total_of_group,a.year,a.month,a.day FROM(
SELECT a.year,a.month,a.day,a.avgResponseTime
FROM analysis_base_service_invoke_by_hour AS a
WHERE createTime BETWEEN #{startTime} AND #{endTime}
AND deleteFlag=0
AND serviceId=#{serviceId}
<if test="userId != null">
AND userId=#{userId}
</if>
<if test="intervalTime == 'day' ">
ORDER BY a.year,a.month,a.day,a.avgResponseTime ASC
</if>
<if test="intervalTime == 'month' ">
ORDER BY a.year,a.month,a.avgResponseTime ASC
</if>
<if test="intervalTime == 'year' ">
ORDER BY a.year,a.avgResponseTime ASC
</if>
) AS a
<if test="intervalTime == 'day' ">
GROUP BY a.year,a.month,a.day
</if>
<if test="intervalTime == 'month' ">
GROUP BY a.year,a.month
</if>
<if test="intervalTime == 'year' ">
GROUP BY a.year
</if>
) AS b
<if test="intervalTime == 'day' ">
WHERE a.year=b.year AND a.month=b.month AND a.day=b.day
</if>
<if test="intervalTime == 'month' ">
WHERE a.year=b.year AND a.month=b.month
</if>
<if test="intervalTime == 'year' ">
WHERE a.year=b.year
</if>
) AS a
WHERE a.count_of_group
BETWEEN a.total_of_group / 2.0
AND a.total_of_group / 2.0 + 1
<if test="intervalTime == 'day' ">
GROUP BY a.year,a.month,a.day
</if>
<if test="intervalTime == 'month' ">
GROUP BY a.year,a.month
</if>
<if test="intervalTime == 'year' ">
GROUP BY a.year
</if>
第3个回答  2016-06-12
也遇到这个问题貌似不支持,建议写个通用存储过程,直接用java代码拼好sql传进去执行

mybatis中支持mysql中的变量吗?
mysql连接url + allowMultiQueries=true jdbc:mysql:\/\/localhost:3306\/DBS?allowMultiQueries=trueMyBatis MySql -Stack Overflow

搞什么!!MyBatis 查询结果与 MySQL 执行结果不一致?
在业务开发过程中,遇到过一个令人困惑的问题:在使用MyBatis进行数据库操作时,查询结果与MySQL执行结果出现不一致现象。具体表现为在程序中查询结果总是不唯一,而在数据库中执行相同SQL语句却没有任何数据返回。面对这样的问题,不禁让人疑惑:难道是MyBatis与数据库的执行结果不同?通过深入分析,发现根...

Mybatis和Mysql的查询语句一样吗?
是的,可以。你要搞清楚一个概念,我们在查询关系数据库时用到的语句是SQL,这是为大多数关系数据库管理系统所支持的工业标准,所以不管我们是查Mysql还是查Oracle等数据库都是一样的SQL,不管是用java还是用C#,也是一样的

mybatis 如何读取 mysql text类型数据?读出来的和数据库里的不一样
C 字符型 --varchar2 N 数字型 --number B 二进制型 --blob T 大文本型 --clob

Mybatis和Mysql的查询语句一样吗?
1. 当我们执行数据库查询时,使用的语言是SQL(Structured Query Language),这是一种被多数关系数据库管理系统支持的工业标准语言。2. 这意味着,不论是使用Mybatis框架还是其他任何数据库访问技术,查询语句的本质是SQL,因此,在语法上,针对MySQL数据库的查询语句与针对Mybatis的查询语句是相同的。3....

mybatis mysql为什么可以不写jdbcType?
mybatis提供默认映射,不止是mysql,o racle,sqlserver等都一样,都有默认的数据类型与jdbcType的映JdbcType. Double对应Number。只有你希望不要使用默认配置的时候才需要显式指出想要映射的类型,比如同样是Number,如果想要映射成JdbcType. Float就需要明确写出来。

mybatis和mybatis-plus配置yml的区别
- MyBatis的配置文件通常是一个XML文件,可以通过`SqlSessionFactoryBuilder`类的`build`方法加载配置文件。- MyBatis-Plus的配置文件是一个YAML(YAML Ain't Markup Language)文件,通常命名为`application.yml`,可以通过Spring Boot的`application.properties`或`application.yml`文件中的`mybatis-plus`...

mybatis和hibernate的区别
而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理。2、hibernate数据库移植性远大于mybatis。hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(oracle、mysql等)的耦合性,而mybatis由于需要手写sql,因此与数据库的耦合性直接取决于程序员写sql的方法...

急!!mybatis 参数解析不了 ERROR: LIMIT #,# syntax is not supported...
limit #,#是mysql支持的语法,看提示mybatis并不支持,但估计有类似的语法,你可以查下,想不抱错的话,直接用limit #应该是可以的,如果要设置偏移量可以试试:limit 5 offset 0(参考postgres语法)。

mybits mysql主键只能是自增的吗
由于mysql数据库中,可以设置表的主键为自增,所以对于Mysql数据库在mybatis配置插入语句时,不指定插入ID字段即可。主键的自增交由Mysql来管理。<sql id='TABLE_NAME'>TEST_USER<\/sql> <!-- 注意这里的插入SQL中是没有指明ID字段的! --><insert id="insert" parameterType="User"> insert i...

相似回答