• MyBatisPlus的学习项目页面


    使用idea配置MyBatisPlus下面这个教程是可以的:

    【精选】使用IDEA配置Mybatis-Plus框架_idea mybatisplus_Yy330*的博客-CSDN博客

    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 wrapper=new QueryWrapper()
                .selct("id","info","balance")
                .like("username","o")
                .ge("balance",1000);
        //2.查询
        List 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 wrapper=new QueryWrapper()
                .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 ids=List.of(1,2,4);
        UpdateWrapper Wrapper = new UpdateWrapper()
                .setSql("balance=balance-200")
                .in("id",ids);
        userMapper.update(null,wrapper);
    
    }

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

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

    Service接口

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

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

     

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

    项目

  • 相关阅读:
    EF Core 批量插入操作原理分析
    记一次用arthas排查jvm中CPU占用过高问题
    剑指 Offer 49. 丑数 && 264. 丑数 II ●●
    [ROS笔记本]QT5问题cmake编译
    1031 查验身份证
    Python中的Class
    Java递归算法
    产品心理学:识知偏见,我们和自己开的玩笑
    L1-085 试试手气-乘法口诀数列 (20 分)-PAT 团体程序设计天梯赛 GPLT
    @RestController 注解网页返回 [] ,出现的bug
  • 原文地址:https://blog.csdn.net/m0_73172034/article/details/133271746