[会写代码的健身爱好者成长史]之mybatis-plus

本文详细介绍MyBatis Plus的安装配置、基本使用方法,包括依赖引入、YAML配置、Mapper接口定义、Service接口及实现,以及如何进行增删改查操作,并通过实例演示了分页查询、条件构造器的使用等高级特性。

目录

1.依赖

2.yml配置

3.mapper

4.service

5.Api的简单使用--分页

 6.添加

7.修改

7.1根据id修改

7.2用条件构造器作为参数: 将userName=张三说java的年龄改为20

7.3 lambda构造器实现修改(推荐使用这一种)

8.删除

8.1 根据id删除

8.2 批量删除

8.3 根据构造器删除

9.查询

9.1 查询所有

9.2 根据id查询

 9.3 根据id批量查询

9.4 根据lambda构造器条件查询

9.4.1 根据某个字段查询

 9.4.2  or 

9.4.3 and 

9.4.4 between

9.4.5 in

9.4.6 like

9.4.7  ge 大于等于

9.4.8  orderByAsc 根据某字段升序排序

9.4.9 orderByDesc  根据某字段降序排序


1.依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.0</version>
        </dependency>

2.yml配置

mybatis-plus:
  mapper-locations: classpath:mappers/*Mapper.xml
  configuration:
    #打印sql
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    #开启驼峰命名
    map-underscore-to-camel-case: true
  global-config:
    db-config:
      table-prefix: t_

3.mapper

继承BaseMapper<实体类>

@Repository
public interface UserMapper extends BaseMapper<User> {
}

4.service

public interface UserService extends IService<User> {
}

serviceImpl

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User>  implements UserService {
}

5.Api的简单使用--分页

添加一个config类

@Configuration
@MapperScan("com.mybatisplus.mapper")
public class MybatisPlusConfig {
    //mybatisPlus分页插件
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}

 编写分页代码

        Page<User> page = userService.page(new Page<>(1,5));
        //查询出来的分页数据
        List<User> records = page.getRecords();
        records.forEach(System.out::println);

输出结果 

 6.添加

        //添加
        userService.save(user);
        //批量添加 users是list集合
        userService.saveBatch(users);
        //批量添加 users是list集合 10是插入批次数量
        userService.saveBatch(users,10);

7.修改

7.1根据id修改

User user4 = new User(17,"abc",18,"徐州市","1999-01-01");
userService.updateById(user4);

7.2用条件构造器作为参数: 将userName=张三说java的年龄改为20

//用条件构造器作为参数: 将userName=张三说java的年龄改为20
//user_name 要和数据库的对应
UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
userUpdateWrapper.eq("user_name","张三说java");
User user1 = new User();
user1.setAge(20);
userService.update(user1,userUpdateWrapper);

如果修改的参数不多也可以这样写,使用updateWrapper的set方法

UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
userUpdateWrapper.eq("user_name","张三说java").set("age",20);
userService.update(null,userUpdateWrapper);

7.3 lambda构造器实现修改(推荐使用这一种)

//将userName = 张三说java的年龄修改为20岁
userService.lambdaUpdate().eq(User::getUserName, "张三说java").set(User::getAge, 20).update();

8.删除

8.1 根据id删除

//根据id删除
userService.removeById(22);

8.2 批量删除

//批量删除,List<Integer> idList = new ArrayList<>();
userService.removeByIds(idList);

8.3 根据构造器删除

//根据构造器删除,删除userName = aaaa的
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getUserName,"aaaa");
userService.remove(queryWrapper);

9.查询

9.1 查询所有

//查询所有
List<User> list = userService.list();

9.2 根据id查询

//根据id查询
User byId = userService.getById(1);

 9.3 根据id批量查询

//根据id批量查询,List<Integer> idList = new ArrayList<>();
List<User> users1 = userService.listByIds(idList);

9.4 根据lambda构造器条件查询

 条件参数说明

查询方式说明
setSqlSelect设置 SELECT 查询字段
whereWHERE 语句,拼接 + WHERE 条件
andAND 语句,拼接 + AND 字段=值
andNewAND 语句,拼接 + AND (字段=值)
orOR 语句,拼接 + OR 字段=值
orNewOR 语句,拼接 + OR (字段=值)
eq等于=
allEq基于 map 内容等于=
ne不等于<>
gt大于>
ge大于等于>=
lt小于<
le小于等于<=
like模糊查询 LIKE
notLike模糊查询 NOT LIKE
inIN 查询
notInNOT IN 查询
isNullNULL 值查询
isNotNullIS NOT NULL
groupBy分组 GROUP BY
havingHAVING 关键词
orderBy排序 ORDER BY
orderAscASC 排序 ORDER BY
orderDescDESC 排序 ORDER BY
existsEXISTS 条件语句
notExistsNOT EXISTS 条件语句
betweenBETWEEN 条件语句
notBetweenNOT BETWEEN 条件语句
addFilter自由拼接 SQL
last拼接在最后,例如:last("LIMIT 1")

9.4.1 根据某个字段查询

.list() 返回的是一个list集合

.one 返回的是一个User对象

//查询年龄 = 18 的数据
List<User> list1 = userService.lambdaQuery().eq(User::getAge, 18).list();
User user = userService.lambdaQuery().eq(User::getAge, 28).one();

 9.4.2  or 

//查询age = 20 或者 userName = 张三说前端 的数据
// SELECT id,user_name,age,address,birthday FROM t_user WHERE (age = ? OR user_name = ?) 
List<User> list1 = userService.lambdaQuery().eq(User::getAge, 20).or().eq(User::getUserName,"张三说前端").list();

9.4.3 and 

// 查询age = 18 并且 userName = ww 的数据
// SELECT id,user_name,age,address,birthday FROM t_user WHERE (age = ? AND user_name = ?)
List<User> list1 = userService.lambdaQuery().eq(User::getAge, 18).eq(User::getUserName,"ww").list();

9.4.4 between

// 查询 age>=20 并且 age<=25 的数据
// SELECT id,user_name,age,address,birthday FROM t_user WHERE (age BETWEEN ? AND ?)
List<User> list = userService.lambdaQuery().between(User::getAge, 20, 25).list();

9.4.5 in

// 查询 age = 20和21 的数据  in()的第二个参数可以写数据,集合,或者直接写死都可以
// SELECT id,user_name,age,address,birthday FROM t_user WHERE (age IN (?,?))
List<User> list = userService.lambdaQuery().in(User::getAge,20,21).list();

9.4.6 like

// 模糊查询
// SELECT id,user_name,age,address,birthday FROM t_user WHERE (user_name LIKE ?)
List<User> list = userService.lambdaQuery().like(User::getUserName,"java").list();

9.4.7  ge 大于等于

// ge 大于等于  查询age>=25的数据
// SELECT id,user_name,age,address,birthday FROM t_user WHERE (age >= ?)
List<User> list = userService.lambdaQuery().ge(User::getAge,25).list();

9.4.8  orderByAsc 根据某字段升序排序

// 根据age升序排序
// SELECT id,user_name,age,address,birthday FROM t_user ORDER BY age ASC
List<User> list = userService.lambdaQuery().orderByAsc(User::getAge).list();

9.4.9 orderByDesc  根据某字段降序排序

// 根据age降序排序
// SELECT id,user_name,age,address,birthday FROM t_user ORDER BY age DESC
List<User> list = userService.lambdaQuery().orderByDesc(User::getAge).list();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值