点击上方“Java基基”,选择“设为星标”
做积极的人,而不是积极废人!
每天 14:00 更新文章,每天掉亿点点头发...
源码精品专栏
原创 | Java 2021 超神之路,很肝~
中文详细注释的开源项目
RPC 框架 Dubbo 源码解析
网络应用框架 Netty 源码解析
消息中间件 RocketMQ 源码解析
数据库中间件 Sharding-JDBC 和 MyCAT 源码解析
作业调度中间件 Elastic-Job 源码解析
分布式事务中间件 TCC-Transaction 源码解析
Eureka 和 Hystrix 源码解析
Java 并发源码
来源:blog.csdn.net/qq_53317005/
article/details/129762660
一、使用#定义参数
1. 持久层接口添加根据名字内容模糊查询方法
2. UserMapper.xml映射文件添加标签
3. 添加测试方法
4. 运行结果
二、使用$定义参数
1. UserMapper.xml映射文件更改标签内容
2. 修改测试方法
3. 运行结果
三、使用
标签定义参数
1. UserMapper.xml映射文件更改标签内容
2. 运行结果
四、聚合查询
1. 持久层接口添加查询所有用户个数方法
2. UserMapper.xml添加标签
3. 添加测试方法
4. 运行结果
五、主键回填
1. 持久层接口添加新增用户方法
2. UserMapper.xml添加标签
3. 添加测试方法
4. 运行结果
// 根据名字内容模糊查询
List findByNameLike(String username);
我们看到在映射文件中,parameterType
的值为 string 而没有写java.lang.String
,这是为什么呢?参数/返回值
类型为基本数据类型/包装类/String
等类型时,我们可以写全类名,也可以写别名。
下表就是一些数据类型对应的别名
数据类型 | 别名 |
---|---|
byte | _byte |
long | _long |
short | _short |
int | _int |
int | _integer |
double | _double |
float | _float |
boolean | _boolean |
String | string |
Byte | byte |
Long | long |
Short | short |
Interger | int / interger |
Double | double |
Float | float |
Boolean | boolean |
Date | date |
BigDecimal | decimal / bigdecimal |
Object | object |
Map | map |
HashMap | hashmap |
List | list |
ArrayList | arraylist |
Collection | collection |
Iterator | iterator |
// 测试根据名字模糊查询
@Test
public void testFindByNameLike(){
String like = "%l%";
List list = userMapper.findByNameLike(like);
list.forEach(System.out::println);
}
OK,这里是成功查询出来了,并且控制台打印日志也和我们的参数一致
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/ruoyi-vue-pro
视频教程:https://doc.iocoder.cn/video/
模糊查询如果不想在调用方法时参数加%,可以使用拼接参数的方式设置Sql:
// 测试根据名字模糊查询
@Test
public void testFindByNameLike(){
String like = "l";
List list = userMapper.findByNameLike(like);
list.forEach(System.out::println);
}
#和$的区别:
#
表示sql模板的占位符,$
表示将字符串拼接到sql模板中。
#
可以防止sql注入,一般能用#
就不用$
。
${}
内部的参数名必须写value。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/yudao-cloud
视频教程:https://doc.iocoder.cn/video/
标签定义参数如果使用 #
还不想在调用方法的参数中添加 %
,可以使用
,
允许我们在 Sql语句以外创建一个变量,并可以将其绑定到当前的Sql语句中。用法如下:
// 查询用户总数
int findCount();
// 测试聚合查询方法
@Test
public void testFindCount(){
System.out.println(userMapper.findCount());
}
还是比较可靠的,确实查询出来了用户总数
有时我们需要获取新插入数据的主键值。如果数据库中主键是自增的,这时我们就需要使用MyBatis的主键回填功能。
// 主键回填-新增用户
void add2(User user);
select last_insert_id();
insert into user(username,sex,address)
values (#{username},#{sex},#{address})
SELECT LAST_INSERT_ID()
:查询刚刚插入的记录的主键值,只适用于自增主键,且必须和insert语句一起执行。
// 测试主键回填功能
@Test
public void testAdd2(){
User user = new User("Lions","man","Beijing");
userMapper.add2(user);
session.commit();
System.out.println(user.getId());
}
好,控制台是成功显示添加了,用户id为11,那我们看看表里面是否成功添加了
确实是成功添加了,ok,本篇文章到此为止了,感谢小伙伴的浏览
欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:
已在知识星球更新源码解析如下:
最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。
提供近 3W 行代码的 SpringBoot 示例,以及超 6W 行代码的电商微服务项目。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)