Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填

点击上方“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. 运行结果


一、使用#定义参数

1. 持久层接口添加根据名字内容模糊查询方法

// 根据名字内容模糊查询
List findByNameLike(String username);

2. UserMapper.xml映射文件添加标签



    select * from user where username like #{name}

我们看到在映射文件中,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

3. 添加测试方法

// 测试根据名字模糊查询
    @Test
    public void testFindByNameLike(){
        String like = "%l%";
        List list = userMapper.findByNameLike(like);
 
        list.forEach(System.out::println);
    }

4. 运行结果

Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填_第1张图片

OK,这里是成功查询出来了,并且控制台打印日志也和我们的参数一致

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

二、使用$定义参数

模糊查询如果不想在调用方法时参数加%,可以使用拼接参数的方式设置Sql:

1. UserMapper.xml映射文件更改标签内容


    
        select * from user where username like '%${value}%'
    

2. 修改测试方法

// 测试根据名字模糊查询
    @Test
    public void testFindByNameLike(){
        String like = "l";
        List list = userMapper.findByNameLike(like);
 
        list.forEach(System.out::println);
    }

3. 运行结果

Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填_第2张图片

#和$的区别:

  • #表示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语句中。用法如下:

1. UserMapper.xml映射文件更改标签内容


    
        
        select * from user where username like #{likeName}
    

2. 运行结果

Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填_第3张图片

四、聚合查询

1. 持久层接口添加查询所有用户个数方法

// 查询用户总数
    int findCount();

2. UserMapper.xml添加标签


    
        select count(id) from user
    

3. 添加测试方法

// 测试聚合查询方法
    @Test
    public void testFindCount(){
        System.out.println(userMapper.findCount());
    }

4. 运行结果

Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填_第4张图片 Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填_第5张图片

还是比较可靠的,确实查询出来了用户总数

五、主键回填

有时我们需要获取新插入数据的主键值。如果数据库中主键是自增的,这时我们就需要使用MyBatis的主键回填功能。

1. 持久层接口添加新增用户方法

// 主键回填-新增用户
    void add2(User user);

2. UserMapper.xml添加标签


    
        
        
            select last_insert_id();
        
        insert into user(username,sex,address)
        values (#{username},#{sex},#{address})
    

SELECT LAST_INSERT_ID():查询刚刚插入的记录的主键值,只适用于自增主键,且必须和insert语句一起执行。

3. 添加测试方法

// 测试主键回填功能
    @Test
    public void testAdd2(){
        User user = new User("Lions","man","Beijing");
        userMapper.add2(user);
 
        session.commit();
        System.out.println(user.getId());
    }

4. 运行结果

Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填_第6张图片

好,控制台是成功显示添加了,用户id为11,那我们看看表里面是否成功添加了

Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填_第7张图片

确实是成功添加了,ok,本篇文章到此为止了,感谢小伙伴的浏览



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填_第8张图片

已在知识星球更新源码解析如下:

Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填_第9张图片

Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填_第10张图片

Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填_第11张图片

Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填_第12张图片

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 6W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)

你可能感兴趣的:(mybatis,java,开发语言)