springboot-MybatisPlus

mybatisplus是来简化mybatis开发的,其中封装好了各种sql语句,我们直接调用即可,省略了编写mapper.xm映射文件的过程
MybatisPlus怎么来获取数据库表的信息?

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

1.入门程序

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

1.1导入依赖

XML 复制代码
  <!--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语句

java 复制代码
@Mapper
@Repository
public interface UserMapper extends BaseMapper<User> {
}

1.3.测试类

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

java 复制代码
@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赋值的
java 复制代码
@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

java 复制代码
    @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

java 复制代码
    @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的格式

java 复制代码
    @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接口:

java 复制代码
public interface UserService extends IService<User> {
}

service实现类:

java 复制代码
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

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

相关推荐
向前看-2 小时前
验证码机制
前端·后端
xlsw_2 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
神仙别闹3 小时前
基于java的改良版超级玛丽小游戏
java
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭3 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
暮湫4 小时前
泛型(2)
java
超爱吃士力架4 小时前
邀请逻辑
java·linux·后端
南宫生4 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
转码的小石4 小时前
12/21java基础
java
李小白664 小时前
Spring MVC(上)
java·spring·mvc
GoodStudyAndDayDayUp4 小时前
IDEA能够从mapper跳转到xml的插件
xml·java·intellij-idea