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:

项目

相关推荐
qq_37711237几秒前
JAVA的平凡之路——此峰乃是最高峰JVM-GC垃圾回收器(1)-06
java·开发语言·jvm
直有两条腿2 分钟前
【Redis】原理-数据结构
数据结构·数据库·redis
学编程就要猛4 分钟前
算法:2.复写零
java·数据结构·算法
韩立学长7 分钟前
【开题答辩实录分享】以《植物园信息管理系统》为例进行选题答辩实录分享
java·数据库·spring
嘻哈baby7 分钟前
记一次线上OOM排查,JVM调优全过程
java
a程序小傲8 分钟前
京东Java面试被问:垃圾收集算法(标记-清除、复制、标记-整理)的比较
java·算法·面试
austin流川枫9 分钟前
深度解析六大Java微服务框架
java·后端·微服务
froginwe1110 分钟前
HTML 标题
开发语言
悠哉悠哉愿意13 分钟前
【嵌入式学习笔记】任务调度器
开发语言·笔记·单片机·嵌入式硬件·学习
笨蛋少年派16 分钟前
Shell脚本编程(bash)简述
开发语言·bash