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:

项目

相关推荐
what丶k1 分钟前
MySQL读写分离部署配置全解析(从原理到落地)
数据库·分布式·mysql
shengli7224 分钟前
Python Lambda(匿名函数):简洁之道
jvm·数据库·python
普通网友5 分钟前
云计算数据加密选型:合规要求(GDPR / 等保)下的方法选择
开发语言·云计算·perl
bugu___6 分钟前
仿muduo库实现并发服务器(3)
开发语言·c++
爱装代码的小瓶子7 分钟前
【Linux基础】操作系统下的进程与虚拟内存的关系
android·java·服务器
betazhou7 分钟前
借用Deepseek写一个定期清理备份文件的ps脚本
开发语言·前端·javascript·ps·deepseek·清理备份文件
淮北4948 分钟前
大模型学习(二、使用lora进行微调)
java·服务器·学习
瑞雪兆丰年兮10 分钟前
[从0开始学Java|第一天]Java入门
java·开发语言
我爱娃哈哈10 分钟前
SpringBoot 实现 RSA+AES 自动接口解密
java·spring boot·后端
崎岖Qiu10 分钟前
SpringBoot:基于注解 @PostConstruct 和 ApplicationRunner 进行初始化的区别
java·spring boot·后端·spring·javaee