MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作

简介: MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作

一、 查询条件设置

查询条件

  • 范围匹配(>、= 、between)
  • 模糊匹配(like)
  • 空判定(null)
  • 包含性匹配(in)
  • 分组(group)
  • 排序(order)
  • 用户登录
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
    //等同于"="
    lqw.eq(User::getUsername,"张三").eq(User::getPassword,123);
    List<User> selectList = userDao.selectList(lqw);
    System.out.println(selectList);
  • 购物设定价格区间、户籍设定年龄区间(le ge匹配或者between匹配)
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
    //范围查询lt le gt ge eq between
    lqw.between(User::getId,1,3);
    User user = userDao.selectOne(lqw);
    System.out.println(user);
  • 查信息、搜索新闻(非全文检索版:like匹配)
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
    //模糊匹配 like
    lqw.like(User::getUsername,"张");
    List<User> userList = userDao.selectList(lqw);
    System.out.println(userList);
  • 统计报表(分组查询聚合函数)
QueryWrapper<User> qw = new QueryWrapper<>();
    qw.select("count(*) as count");
    qw.groupBy("gender");
    LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
    List<User> userList = userDao.selectList(lqw);
    System.out.println(userList);

二、 映射匹配兼容性

2.1 字段映射与表名映射

  • 名称:@TableFiled
  • 类型:属性注解
  • 位置:模型类属性定义上方
  • 作用:设置当前属性对应的数据库表中的字段关系
  • 范例:
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password")
    private String passWord;
    private String gender;
    private String addr;
}
  • 相关属性:
  • value(默认):设置数据库表字段名称

2.2 编码中出现了数据库中未出现的属性

  • exist:设置属性在数据库表字段中是否存在,默认为true,此属性无法与value合并使用。
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password")
    private String passWord;
    private String gender;
    private String addr;
    @TableField(exist = false)
    private Integer online;
}

2.3 采用默认查询开放了更多的字段查看权限

  • select:设置属性是否参与查询,此属性与select()映射匹配不冲突
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password",select = false)
    private String passWord;
    private String gender;
    private String addr;
    @TableField(exist = false)
    private Integer online;
}

2.4 表名映射设置

  • 名称:@TableName
  • 类型:类注解
  • 位置:模型类属性定义上方
  • 作用:设置当前类对应与数据库表关系
  • 范例:
@TableName("tb_user")
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password")
    private String passWord;
    private String gender;
    private String addr;
}
  • 相关属性:
  • value:设置数据库表名称

三、 id生成策略

3.1 id生成策略控制

  • 不同的表应用不同的id生成策略
  • 日志:自增(1,2,3,4,5…)
  • 购物订单:特殊规则(FQ23948AK3843)
  • 外卖单:关联地区日期等信息(10 04 20200314 34 91)
  • 关系表:可省略id
  • 名称:@TableId
  • 类型:属性注解
  • 位置:模型类中用于表示主键的属性定义上方
  • 作用:设置当前类中主键属性的生成策略
  • 范例:
@TableName("tb_user")
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password")
    private String passWord;
    private String gender;
    private String addr;
}
  • 相关属性:
  • value:设置数据库主键名称
  • type:设置主键属性的生成策略,值参照IdType枚举值
  • AUTO(0):使用数据库id自增策略控制id生成
  • NONE(1):不设置id生成策略
  • INPUT(2):用户手工输入id
  • ASSIGN_ID(3):雪花算法生成id(可兼容数值型与字符串型)

  • ASSIGN_UUID(4):以UUID生成算法作为id生成策略

3.2 id生成策略全局配置

@TableName("tb_user")
public class User {
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
}

3.3 表名前缀全局配置

@TableName("tb_user")
public class User {
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
}

3.4 全局配置(综合id生成前缀和表名前缀)

# 设置统一id生成算法(为所有实体类设置)
mybatis-plus:
  global-config:
    banner: false
    db-config:
      id-type: assign_id
      # 设置数据库表名前缀
      table-prefix: tb_

四、多数据操作

  • 按照主键删除多条记录
void testDelete() {
    List<Long> list = new ArrayList<>();
    list.add(1698537145196683265L);
    list.add(1698539961168465921L);
    list.add(1698540047797653506L);
    userDao.deleteBatchIds(list);
  }
  • 根据主键查询多条记录
void testSelect() {
    List<Long> list = new ArrayList<>();
    list.add(1L);
    list.add(2L);
    list.add(3L);
    list.add(4L);
    userDao.selectBatchIds(list);
  }


相关文章
|
8月前
|
SQL Java 数据库连接
MyBatis 的映射关系
MyBatis 核心功能之一是映射关系,支持一对一、一对多和多对多三种 ORM 映射。通过实体类与配置文件结合,开发者可灵活实现数据关联,提升数据库操作效率。
439 4
|
10月前
|
SQL XML Java
MyBatis Mapper中使用limit参数的查询问题
总结而言,MyBatis中使用 `limit`参数的查询可以高度定制并且灵活,基于方法签名和XML映射文件的组合来达成多样化的查询需求。通过参数化查询和动态SQL,MyBatis可以有效地处理各种复杂情境下的数据库操作,并且将SQL语句的维护与业务代码的编写相分离,提升代码的可维护性和可阅读性。
813 13
|
11月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
649 1
|
12月前
|
SQL XML Java
菜鸟之路Day35一一Mybatis之XML映射与动态SQL
本文介绍了MyBatis框架中XML映射与动态SQL的使用方法,作者通过实例详细解析了XML映射文件的配置规范,包括namespace、id和resultType的设置。文章还对比了注解与XML映射的优缺点,强调复杂SQL更适合XML方式。在动态SQL部分,重点讲解了`&lt;if&gt;`、`&lt;where&gt;`、`&lt;set&gt;`、`&lt;foreach&gt;`等标签的应用场景,如条件查询、动态更新和批量删除,并通过代码示例展示了其灵活性与实用性。最后,通过`&lt;sql&gt;`和`&lt;include&gt;`实现代码复用,优化维护效率。
1157 5
|
SQL XML Java
七、MyBatis自定义映射resultMap
七、MyBatis自定义映射resultMap
420 6
|
XML Java 数据库连接
Mybatis一对一,一对多关联查询
## MyBatis一对一、一对多关联查询详解 MyBatis是一款优秀的持久层框架,提供了灵活的SQL映射功能,支持复杂的数据库操作。本文将详细介绍MyBatis中一对一和一对多关联查询的实现。 ### 一对一关联查询 一对一关联关系指的是一个表中的一条记录与另一个表中的一条记录相关联。例如,一个用户有一个地址信息。 #### 数据库表设计 假设有两个表:`user`和 `address`。 ``` CREATE TABLE user ( id INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE address
569 18
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
1939 6
|
Java 数据库连接 mybatis
MyBatis篇-映射关系(1-1 1-n n-n)
本文介绍了MyBatis中四种常见关系映射的配置方法,包括一对一、一对多、多对一和多对多。**一对一**通过`resultMap`实现属性与字段的映射;**一对多**以用户-角色为例,使用`&lt;collection&gt;`标签关联集合数据;**多对一**以作者-博客为例,利用`&lt;association&gt;`实现关联;**多对多**则通过引入第三方类(如UserForDept)分别在User和Dept类中添加集合属性,并配置对应的`&lt;collection&gt;`标签完成映射。这些方法解决了复杂数据关系的处理问题,提升了开发效率。
|
SQL Java 数据库连接
【潜意识Java】深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
2857 1
|
11月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1609 1
Spring boot 使用mybatis generator 自动生成代码插件