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:

项目

相关推荐
等D春C夏X12 分钟前
最终版C++11/14/17学习大纲(精准核对42条条款)
java·开发语言
diaya14 分钟前
麒麟V10 x86系统安装mysql
数据库·mysql
LaughingZhu19 分钟前
Product Hunt 每日热榜 | 2026-02-24
大数据·数据库·人工智能·经验分享·搜索引擎
Cg1362691597430 分钟前
HTML标题标签
java
feathered-feathered33 分钟前
测试实战【用例设计】自己写的项目+功能测试(1)
java·服务器·后端·功能测试·jmeter·单元测试·压力测试
洋洋技术笔记36 分钟前
Spring Boot自动装配原理
java·spring boot
iameyama1 小时前
Amazon Redshift 和 BigQuery 数据类型区别
java·开发语言
-孤存-1 小时前
Spring Bean作用域与生命周期全解析
java·开发语言·前端