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:

项目

相关推荐
014-code几秒前
Redis Stream:消息队列的进阶之路
数据库·redis·缓存
格林威1 分钟前
工业相机“心跳”监测脚本(C# 版) 支持海康 / Basler / 堡盟工业相机
开发语言·人工智能·数码相机·opencv·计算机视觉·c#·视觉检测
我能坚持多久4 分钟前
String类常用接口的实现
c语言·开发语言·c++
m0_514520575 分钟前
如何分析Data Guard的网络瓶颈_Bandwidth与Redo传输速率的计算公式
jvm·数据库·python
落魄江湖行6 分钟前
基础篇三 一行 new String(“hello“) 到底创建了几个对象?90% 的人答错了
java·面试·八股文
weixin_458580127 分钟前
如何查找SQL中未使用JOIN的数据行_利用IS NULL配合LEFT JOIN
jvm·数据库·python
吕源林7 分钟前
c++如何利用filesystem--path--lexically_normal规范化路径名【详解】
jvm·数据库·python
花间相见7 分钟前
【大模型微调与部署03】—— ms-swift-3.12 命令行参数(训练、推理、对齐、量化、部署全参数)
开发语言·ios·swift
青衫码上行9 分钟前
【从零开始学习JVM】栈中存的是指针还是对象 + 堆分为哪几部分
java·jvm·学习·面试
a9511416429 分钟前
解决Socket图像传输中断问题:基于分块接收与正确连接模型的稳定实现
jvm·数据库·python