springboot-MybatisPlus

mybatisplus是来简化mybatis开发的,其中封装好了各种sql语句,我们直接调用即可,省略了编写mapper.xm映射文件的过程

MybatisPlus怎么来获取数据库表的信息?

  • 默认以类型驼峰转下划线作为表名
  • 默认把id字段作为主键
  • 默认把变量名驼峰转下划线作为字段名

1.入门程序

前提:准备好数据库,pojo实体类

1.1导入依赖

  <!--MybatisPlus-SpringBoot-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>

1.2.mapper——UserMapper接口

与之前使用mybatis不同的是,这个接口要继承MybatisPlus提供的父类,这个父类里封装了SQL语句

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

1.3.测试类

insert语句我们并没有编写,是MybatisPlus给我们提供的

@SpringBootTest
class SpringbootMybatisplusApplicationTests {

    @Autowired
    UserMapper userMapper;

    @Test
    void test01(){
        User user = new User();
        user.setId(4);
        user.setPwd("12035");
        user.setName("小张");
        user.setPerms(null);
        System.out.println(userMapper.insert(user));
    }

}

2.常用注解

  • @TableName:当类名和表名不一致时用来指定表名
  • @TableId:用来指定表中的主键字段信息
  • @TableField:当属性名和字段名不一致时用来指定表中的普通字段信息

注意:如果数据库里的id有类型(比如是自增长的),那么就必须添上下面例子里的注解,否则默认是通过雪花算法来给id赋值的 

@TableName("tb_user")
public class User {

    @TableId(type = IdType.AUTO)
    private int id;
    @TableField("name")
    private String name;
    private String pwd;
    private String perms;
}

3.常见配置

mybatisplus继承了mybatis的原生配置,如:

  • xml映射文件路径
  • 驼峰命名和下划线映射
  • 别名扫描包

4.条件构造器

在执行SQL语句时,难免会有复杂情况,mybatisplus也有这些情况的应对方式

4.1.selectList 

    @Test
    void test02(){

        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.select("id","name");
        wrapper.like("name","张");

        List<User> users = userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

解释上面的代码:

  • 我们通过mapper接口的对象来调用mybatisplus封装好的select方法,其中需要一个叫做QueryWrapper类型的参数
  • 因此,我们就要先来构造这个对象,然后通过构造的对象可以给SQL增加复杂条件
  • wrapper.select("id","name"); 表示要查询的字段只有id和name
  • wrapper.like("name","张"); 表示模糊查询name中带有“张”的用户
  • 上面的代码生成的SQL为:
    select id , name from tb_user where name like '%张%'

4.2.update 

    @Test
    void test03(){
        //1.更新的数据
        User user = new User();
        user.setPwd("52236");
        //2.更新的条件
        UpdateWrapper<User> wrapper = new UpdateWrapper<>();
        wrapper.eq("name","小张");
        //3.执行更新
        userMapper.update(user,wrapper);
    }

 解释上面的代码:

  • update方法需要两个参数,一个是实体类对象,另一个是wrapper
  • 实体类对象来传要修改的数据
  • wrapper对象来传修改的条件
  • 上面的代码生成的SQL为:
    update tb_user set pwd = '52236' where name = '小张'

4.3.基于lambda的格式

    @Test
    void test04(){
        //查询条件
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        wrapper.select(User::getId,User::getName);
        wrapper.like(User::getName,"张");
        //执行SQL
        List<User> users = userMapper.selectList(wrapper);
        for (User user1 : users) {
            System.out.println(user1);
        }
    }

 解释上面的代码:

  • LambdaQueryWrapper和QueryWrapper的区别是,前者在传参数的时候,要的是方法类型的参数,可以和4.1对比一下,在4.1中为id的地方,在4.3中就是getId,诸如此类

5.IService接口基本用法

上面介绍了mybatisplus提供的Mapper接口BaseMapper,下面来介绍下mybatisplus提供的Service接口IService和Service实现类ServiceImpl

service接口: 

public interface UserService extends IService<User> {
}

service实现类: 

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

PS:这部分笔记只是浅浅的学习了下mybatisplus(主要是为了应对网上的项目才学的)后面有时间,我会把剩下的笔记补齐的

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值