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

简介: 【2月更文挑战第11天】


一、使用#定义参数

  1. 持久层接口添加根据名字内容模糊查询方法
    // 根据名字内容模糊查询
    List findByNameLike(String username);

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


    select * from user where username like #{name}

数据类型

别名
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

  1. 添加测试方法
    // 测试根据名字模糊查询
    @Test
    public void testFindByNameLike(){

     String like = "%l%";
     List<User> list = userMapper.findByNameLike(like);
    
     list.forEach(System.out::println);
    

    }

  2. 运行结果

image.png

二、使用$定义参数

  1. UserMapper.xml映射文件更改标签内容
    select * from user where username like '%${value}%'
  2. 修改测试方法
    // 测试根据名字模糊查询
    @Test
    public void testFindByNameLike(){

     String like = "l";
     List<User> list = userMapper.findByNameLike(like);
    
     list.forEach(System.out::println);
    

    }

  3. 运行结果

image.png

表示sql模板的占位符,$表示将字符串拼接到sql模板中。

可以防止sql注入,一般能用#就不用$。

${}内部的参数名必须写value。
三、使用标签定义参数

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

    select * from user where username like #{likeName}
  2. 运行结果

image.png

四、聚合查询

  1. 持久层接口添加查询所有用户个数方法
    // 查询用户总数
    int findCount();
  2. UserMapper.xml添加标签
    select count(id) from user
  3. 添加测试方法
    // 测试聚合查询方法
    @Test
    public void testFindCount(){

     System.out.println(userMapper.findCount());
    

    }

  4. 运行结果
    image.png
    image.png
    还是比较可靠的,确实查询出来了用户总数

五、主键回填

  1. 持久层接口添加新增用户方法
    // 主键回填-新增用户
    void add2(User user);
  2. UserMapper.xml添加标签


    select last_insert_id();

    insert into user(username,sex,address)
    values (#{username},#{sex},#{address})
  1. 添加测试方法
    // 测试主键回填功能
    @Test
    public void testAdd2(){

     User user = new User("Lions","man","Beijing");
     userMapper.add2(user);
    
     session.commit();
     System.out.println(user.getId());
    

    }

  2. 运行结果
    image.png
    好,控制台是成功显示添加了,用户id为11,那我们看看表里面是否成功添加了
    ​​image.png
    确实是成功添加了,ok,本篇文章到此为止了,感谢小伙伴的浏览,顺便点击下面投一下票囖,看看您是否有学到了呢

相关文章
|
2月前
|
Java 数据库连接 数据库
mybatis查询数据,返回的对象少了一个字段
mybatis查询数据,返回的对象少了一个字段
140 8
|
6天前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
9 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
24天前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
39 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
12天前
|
SQL Java 数据库连接
mybatis如何仅仅查询某个表的几个字段
【10月更文挑战第19天】mybatis如何仅仅查询某个表的几个字段
18 1
|
24天前
|
SQL Java 数据库连接
mybatis使用四:dao接口参数与mapper 接口中SQL的对应和对应方式的总结,MyBatis的parameterType传入参数类型
这篇文章是关于MyBatis中DAO接口参数与Mapper接口中SQL的对应关系,以及如何使用parameterType传入参数类型的详细总结。
27 10
|
2月前
|
SQL XML Java
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
2月前
|
SQL XML Java
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
4月前
|
Java 数据库连接 测试技术
mybatis plus 获取新增实体的主键
mybatis plus 获取新增实体的主键
130 8
|
4月前
|
算法 Java 数据库连接
mybatis plus 主键策略
mybatis plus 主键策略
52 2
|
4月前
|
Java 数据库连接 mybatis
Mybatis查询传递单个参数和传递多个参数用法
Mybatis查询传递单个参数和传递多个参数用法
63 11