mybatis排序无效问题
发表于|更新于
|浏览量:
今天在mybatis.xml里加了段排序,一开始发现排序不生效,debug发现参数确实传过去了,但并没有执行排序逻辑
最后发现。。。
1 | //这样写法是错误的,mybatis会给它加上引号 |
要更改成$
1 | //也就是这样 |
这样会直接替换、拼接sql
相关推荐
2021-12-26
mybatis-plus允许自定义handlerType的set
与有肝胆人共事,从无字句处读书。——周恩来 今天看mybatis-plus源码发现了UpdateWrapper中的set竟然有一两个重载没有在官方文档写到: 一看官方示例,发现它可以临时自定义typeHandler,也就是类型处理器,以及属性所在的java类型和数据库中字段的数据类型(jdbcType) 例如官方示例传入的: 我们也可以像方法注释那样传入javaType和jdbcType 12345// wrapper typeHandler 测试 LambdaUpdateWrapper<User> wrapper = Wrappers.<User>lambdaUpdate().set(User::getWallets, Arrays.asList(new Wallet("Tom", Arrays.asList(new Currency("RMB", 1000d)))), "javaType=java.util.List,jdbcType=VARCHAR,type...
2020-11-30
springboot使用异步任务
一个简单的异步任务在springboot中已经为我们封装好,这里我们可以直接在函数上加@Async注解即可使用 注意,我们要接收返回值的话,函数返回类型需要为Future 例如,我们这里使用异步任务和建造者模式去创建一个对象 123456789101112131415161718192021222324252627282930313233343536package com.ruben;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.scheduling.annotation.Async;import org.springframework.scheduling.annotation.AsyncResult;import java.util.concurrent.ExecutionException;import java.util.concurrent.Future;/** * @Cl...
2021-07-07
thymeleaf调用springBean
没有经过战斗的舍弃,是虚伪的;没有经过苦难的超脱,是轻佻的。——傅雷 昨天写了一篇关于前端精度丢失的博客 今天发现还有个问题,如果我们需要使用thymeleaf在js中使用获取的数据是一个对象 并且里面的属性还是超出16位的Long类型的话,仍然会导致精度丢失 这里我们可以直接写一个JsonManager 12345678910111213141516171819/** * Json转换管理层 * * @author <achao1441470436@gmail.com> * @since 2021/7/7 11:12 */public interface JsonManager { /** * 序列化处理精度丢失 * * @param serializeObj 将要序列化的对象 * @return java.lang.Object * @author <achao1441470436@gmail.com> * @since 2021/7/7 11:16 */ Object ...
2021-03-31
单表和连表?如何选择?
快乐,使生命得以延续。快乐,是精神和肉体的朝气,是希望和信念,是对自己的现在和来来的信心,是一切都该如此进行的信心。——果戈理 今天做了个小测试啊 我自己造了一百万多条(1029708条)数据 这里测试呢我们首先是编写了一个LEFT JOIN 连表SQL如下 123SELECT *FROM `film` LEFT JOIN `language` ON `film`.language_id = `language`.language_id 我们查询一百万多条后耗时为33457.8317 ms,大约30来秒,这是没有加索引的情况下 我们使用单表查询,然后再拼装 1234567891011long startTime = System.nanoTime();List<Film> films = filmMapper.selectList(Wrappers.lambdaQuery());List<Integer> languageIds = films.parallelStream().map(Film::getLanguageId).d...
2024-12-12
websocket关闭指定原因
如果没有宽恕之心,生命会被无休止的仇恨和报复所支配。——阿萨吉奥 WebSocket 是一种轻量级、双向的实时通信协议,在现代 Web 应用中非常流行。它为客户端和服务端提供了长连接能力,适用于需要频繁数据交互的场景。然而,在实际开发中,我们经常需要处理 WebSocket 的关闭事件,而 关闭状态(CloseStatus) 是其中一个重要的概念,它能够帮助开发者理解连接关闭的原因,从而采取相应的措施。 什么是 CloseStatus?在 WebSocket 协议中,每次连接关闭都会携带一个 关闭码(close code) 和可选的 关闭原因(reason phrase)。这些关闭码由 RFC 6455 定义,表示连接关闭的原因。例如: 1000 (Normal Closure): 正常关闭,表示连接完成。 1001 (Going Away): 客户端或服务端主动断开(例如页面关闭)。 1002 (Protocol Error): 协议错误。 1003 (Unsupported Data): 不支持的数据类型。 在 Spring Framework 中,org.sprin...
2020-12-01
debugのChrome篇
我来到这个世界为的是看太阳和蔚蓝色的田野。——巴尔蒙特 chrome中如何debug?我们可以打开chrome的控制台 找到我们的文件 然后在想要调试的地方打断点 然后执行到此处的时候就会触发调试 我们可以点击右侧的Step into next function call来执行下一步函数调用 可以点击Resume script execution放行到下个断点 然后Step over next function call则可以执行步过,执行到当前函数结尾 Step out of current function步出,则可以跳出我们当前执行的函数 Step和我们第一个Step into next function call差不多,都是执行下一步 Activate breakpoints则是禁用断点 最后一个Pause on exceptions则是在所有异常发生时暂停程序,开始调试 我们也可以直接在代码里右键,点击执行到当前代码 Call Stack区域可以查看我们当前函数以及它的调用者 甚至 调用者的调用者… 下方的Scope区域可以观测我们的参数,...

阿超
我的名字叫阿超 年龄25岁 家在北京市 职业是软件开发 每天最晚也会在八点前回家 不抽烟 酒浅尝辄止 晚上十二点上床 保证睡足八个小时 睡前写一篇博客 再做二十分钟俯卧撑暖身 然后再睡觉 基本能熟睡到天亮 像婴儿一样不留下任何疲劳和压力 就这样迎来第二天的早晨 健康检查结果也显示我很正常 我想说明我是一个不论何时都追求内心平稳的人 不拘泥于胜负 不纠结于烦恼 不树立使我夜不能寐的敌人 这就是我在这社会的生活态度
Follow Me公告
This is my Blog