MyBatisPlus的学习项目页面

MyBatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息

类名驼峰转下划线作为表名

名为id的字段作为主键

变量名驼峰转下划线作为表的字段名

常见注解

@TableName:用来指定表名

@Tableld:用来指定表中的主键字段信息

@TableField:用来指定表中的普通字段信息

IdType枚举
  • AUTO:数据库自增长
  • INPUT:通过set方法自行输入
  • ASSIOG_ID:分配ID,接口IdentifierGenerator的方法nextId来生成id,默认实现类为DefaultIdentifierGenerator雪花算法

对于这个数据库表:tb_user

使用@TableField的常见场景:

  • 成员变量名与数据库字段名不一致
  • 成员变量名以is开头,且是布尔值
  • 成员变量名与数据库关键字冲突
  • 成员变量不是数据库字段

条件构造器

查询出名字中带'o'的,存款大于等于1000元的人的id,info,balance:

SELECT id,info,balance

FROM user

WHERE username LIKE "o" AND balance >=?

复制代码
void testQueryWrapper(){
    //1.构建查询条件
    QueryWrapper<User> wrapper=new QueryWrapper<User>()
            .selct("id","info","balance")
            .like("username","o")
            .ge("balance",1000);
    //2.查询
    List<User> users=userMapper.selectList(wrapper);
    users.forEach(System::out::println);
}

其中User类是已经绑定数据库对应的user表

更新用户名为jack的用户余额为2000

UPDATE user

SET balance = 2000

WHERE username = "jack"

复制代码
void testUpdateByQueryWrapper(){
    //1.要更新的数据
    User user=new User();
    user.setBalance(2000);
    //2.更新的条件
    QueryWrapper<User> wrapper=new QueryWrapper<User>()
            .eq("username","jack");
    //3.执行更新
    userMapper.update(user,wrapper);
}

更新id为1,2,4的用户的余额,扣200.

UPDATE user

SET balance = balance - 200

WHERE id IN (1,2,4)

复制代码
void testUpdateWrapper(){
    List<int> ids=List.of(1,2,4);
    UpdateWrapper<User> Wrapper = new UpdateWrapper<User>()
            .setSql("balance=balance-200")
            .in("id",ids);
    userMapper.update(null,wrapper);

}

尽量使用LambdaQueryWrapper和LambdaUpdateWrapper,避免硬编码

复制代码
void testLambdaQueryWrapper(){
    //1.构建查询条件
    LabdaQueryWrapper<User> wrapper=new LabdaQueryWrapper<User>()
            .selct(User::getUsername,User::getInfo,User::getBalance)
            .like(User::getUsername,"o")
            .ge(User::getBalance,1000);
    //2.查询
    List<User> users=userMapper.selectList(wrapper);
    users.forEach(System::out::println);
}

Service接口

自己写的UserService接口继承IService接口,实现类UserServiceImpl继承ServiceImpl实现类,此时就可以使用Service接口了。

基于Restful风格实现下面的接口:

多个条件的查询建议用Lambda:

项目

相关推荐
极限实验室6 分钟前
INFINI Labs 产品更新 - Easysearch 2.1.0 新增高性能 Rules 规则引擎插件,数据探索 Discover 等
数据库·产品
工程师老罗1 小时前
Image(图像)的用法
java·前端·javascript
leo_messi941 小时前
2026版商城项目(一)
java·elasticsearch·k8s·springcloud
globaldomain2 小时前
什么是用于长距离高速传输的TCP窗口扩展?
开发语言·网络·php
美味蛋炒饭.2 小时前
Tomcat 超详细入门教程(安装 + 目录 + 配置 + 部署 + 排错)
java·tomcat
沈阳信息学奥赛培训2 小时前
#undef 指令 (C/C++)
c语言·开发语言·c++
2401_873204652 小时前
分布式系统安全通信
开发语言·c++·算法
鹿角片ljp2 小时前
苍穹外卖 day05:店铺营业状态设置与Redis入门实战
数据库·redis·缓存
dreamxian2 小时前
苍穹外卖day11
java·spring boot·后端·spring·mybatis
Veggie262 小时前
【Java深度学习】PyTorch On Java 系列课程 第八章 17 :模型评估【AI Infra 3.0】[PyTorch Java 硕士研一课程]
java·人工智能·深度学习