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);
  }


相关文章
|
1月前
|
SQL Java 数据库连接
MyBatis 的映射关系
MyBatis 核心功能之一是映射关系,支持一对一、一对多和多对多三种 ORM 映射。通过实体类与配置文件结合,开发者可灵活实现数据关联,提升数据库操作效率。
185 4
|
3月前
|
SQL XML Java
MyBatis Mapper中使用limit参数的查询问题
总结而言,MyBatis中使用 `limit`参数的查询可以高度定制并且灵活,基于方法签名和XML映射文件的组合来达成多样化的查询需求。通过参数化查询和动态SQL,MyBatis可以有效地处理各种复杂情境下的数据库操作,并且将SQL语句的维护与业务代码的编写相分离,提升代码的可维护性和可阅读性。
363 13
|
7月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】Mybatis-Plus调用YashanDB怎么设置分页
【YashanDB知识库】Mybatis-Plus调用YashanDB怎么设置分页
|
4月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
179 1
|
5月前
|
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;`实现代码复用,优化维护效率。
436 5
|
7月前
|
SQL XML Java
七、MyBatis自定义映射resultMap
七、MyBatis自定义映射resultMap
187 6
|
8月前
|
监控 安全 数据库
【YashanDB 知识库】Mybatis-Plus 调用 YashanDB 怎么设置分页
数据库状态分为正常与异常两种情况。当出现异常时,首先查看告警列表确认问题(如实例无法连接),并尝试用数据库用户名和密码登录。若能登录,说明主实例故障已切换至备库;若无法登录或为单节点,则需进一步排查。接着检查监控项,若有数据表明主实例故障,无数据则可能是通信中断。随后检查主机上的服务是否存在,若存在但通信受限,需排查安全设置或网络;若服务不存在,可能因重启或断电导致,需手动启动相关服务。最终在YashanDB列表中确认状态恢复。
|
7月前
|
Java 数据库连接 mybatis
MyBatis篇-映射关系(1-1 1-n n-n)
本文介绍了MyBatis中四种常见关系映射的配置方法,包括一对一、一对多、多对一和多对多。**一对一**通过`resultMap`实现属性与字段的映射;**一对多**以用户-角色为例,使用`&lt;collection&gt;`标签关联集合数据;**多对一**以作者-博客为例,利用`&lt;association&gt;`实现关联;**多对多**则通过引入第三方类(如UserForDept)分别在User和Dept类中添加集合属性,并配置对应的`&lt;collection&gt;`标签完成映射。这些方法解决了复杂数据关系的处理问题,提升了开发效率。
|
7月前
|
SQL XML Java
六、MyBatis特殊的SQL:模糊查询、动态设置表名、校验名称唯一性
六、MyBatis特殊的SQL:模糊查询、动态设置表名、校验名称唯一性
188 0
|
9月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
908 6