MyBatis的Param注解对JavaBean的使用方法
发表于|更新于|Java
|总字数:196|阅读时长:1分钟|浏览量:
在使用MyBatis时,如果参数列表中传入的是一个JavaBean对象,那么在MyBatis的SQL中应该是如下使用方式。
如果参数中加了@Param,那么既可以使用#{}获取,也可以使用${}获取。
1 | @Select("SELECT id,username from user where age between #{queryParam.minAge} and #{queryParam.maxAge}") |
使用$获取
1 | @Select("SELECT id,username from user where age between ${queryParam.minAge} and ${queryParam.maxAge}") |
如果不使用@Param注解时,参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性。
1 | @Select("SELECT id,username from user where age between ${minAge} and ${maxAge}") |
文章作者: Charles
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 码农笔记!
相关推荐

2018-03-07
MyBatis中大于和小于的编码方法
在使用MyBatis开发过程中,会将SQL编写在XxxMapper.xml中,由于>和<本身也是xml内容的一种,这会将其误认为是标签,所以在SQL中有>、<的时候会提示报错,可以使用下面两种方法去编码。 使用转义序列12< 可以使用 < 代替> 可以使用 > 代替 使用CDATA CDATA 全名:character data。所有 XML 文档中的文本均会被解析器解析,除了 CDATA 区段(CDATA section)中的文本会被解析器忽略。 CDATA的形式如下: <![CDATA[文本内容]]> 。 CDATA的文本内容中不能出现字符串]]>。另外,CDATA不能嵌套。 XML 实例: 在CDATA标记中的信息被解析器原封不动地传给应用程序,并且不解析该段信息中的任何控制标记。 CDATA区域是由<![CDATA[为开始标记,以]]>为结束标记,注意CDATA为大写。 示例: 12< 可以使用 <![CDATA[ < ]]>...

2018-10-06
解决Mybatis不支持JDK1.8日期类型的问题
在之前,我们定义实体类的时候,日期一般都选用的是java.sql.Date、java.sql.Timestamp、java.util.Date等,来映射数据库中的date、timestamp、datetime等类型的字段,虽然使用JDK1.8也近三年多了,但是依旧没有用到JDK1.8的新特性,比如lambda表达式,stream流,以及日期类型。所以现在也是强迫自己能用新特性就用新特性,绝不偷懒,慢慢地也是差不多都掌握了其用法,写起来确实不错,但是在将数据保存到mysql中时,出现了如下异常 123456789101112Caused by: java.lang.IllegalStateException: Type handler was null on parameter mapping for property 'birthday'. It was either not specified and/or could not be found for the javaType / jdbcType combination specified.at org...

2016-08-02
MyBatis中selectKey的使用
本篇介绍一下Mybatis中selectKey的使用。 在开发过程中,CRUD是免不了的,在插入数据时,通常我们只需要返回受影响行数即可,但也有些场景需要返回插入数据后的主键ID,在Mybatis中只需要使用selectKey即可实现。 自增主键使用示例通常我们会将SQL写在MyBatis的*Mapper.xml文件中,本次示例也是如此 创建表1234567CREATE TABLE `t_user` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'UserId', `username` varchar(80) NOT NULL COMMENT 'username', `password` varchar(80) NOT NULL COMMENT 'password', `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'create_time...

2023-06-20
Kerberos认证后访问HDFS提示Not attempting to re-login错误
场景CDH6.3.4集群,开通了Kerberos认证,在客户端得机器上已经通过了Kerberos得认证并且缓存了票据。 由于是新装的系统,安装了最新的jdk-8u371。 报错执行hdfs dfs -ls / 命令频繁的打印如下错误: 1org.apache.hadoop.security.UserGroupInformation Not attempting to re-login since the last re-login was attempted less than 600 seconds before 错误原因找了很久,忽然想到了曾经遇到过这种问题,是JDK版本太低导致的,但我安装了最新的JDK1.8,那就有可能是JDK版本太高导致的。 解决办法下载了一个jdk-8u221版本,完美解决问题。CDH虽然写了支持JDK1.8,但小版本也会影响到它的正常运行,所以以后遇到类似得情况先调整下JDK版本,别太高也别太低。最好是看下官方有没有推荐的版本。

2026-07-19
SpringAI学习笔记(一)- 初识Spring AI 2
今天学习下Spring AI 2.0.0: 第一个Spring AI Hello World 结构化输出 Tool Calling RAG Advisor 环境要求 JDK : temurin-lts-jdk (25.0.3-9.0.LTS) Spring Ai : 2.0.0 SpringBoot : 4.1.0 Gradle : 9.5.1 创建项目创建正常的Spring项目即可,添加的依赖有: spring-boot-starter-web spring-boot-starter-webflux spring-ai-starter-model-openai lombok spring-boot-devtools junit spring-ai-bom 我选择的是Gradle,下面就贴一下build.gradle,创建好应该是这样的: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546plugins { id 'java&...

2019-07-17
删除Redis中keys命令匹配到所有key
在开发过程中,经常会遇到Redis的机器内存过高而导致其他服务受到影响,主要原因是没有对一些临时的key设置过期时间或者定期清理,时间一长就会造成很多垃圾数据塞满内存,那么此时就可以通过keys命令将匹配到的key删除。 单节点Redis删除key单节点不存在槽(slot)的概念,所以可以直接使用如下命令进行删除 1redis-cli keys "*gitlab*"|xargs redis-cli del 上面的命令表示删除所有包含gitlab的key,使用keys *gitlab*将会得到如下结果: 12345678910111213root@ubuntu:~# redis-cli -n 0 keys "*gitlab*" 1) "resque:gitlab:cron_job:expire_build_artifacts_worker" 2) "resque:gitlab:cron_job:admin_email_worker:enqueued" 3) "resque:gitlab...
评论
公告
开始忙了,长草期。




