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(主要是为了应对网上的项目才学的)后面有时间,我会把剩下的笔记补齐的

相关推荐
The_Ticker2 分钟前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
大数据编程之光25 分钟前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink
爪哇学长38 分钟前
双指针算法详解:原理、应用场景及代码示例
java·数据结构·算法
ExiFengs42 分钟前
实际项目Java1.8流处理, Optional常见用法
java·开发语言·spring
paj12345678944 分钟前
JDK1.8新增特性
java·开发语言
捂月1 小时前
Spring Boot 深度解析:快速构建高效、现代化的 Web 应用程序
前端·spring boot·后端
繁依Fanyi1 小时前
简易安卓句分器实现
java·服务器·开发语言·算法·eclipse
慧都小妮子1 小时前
Spire.PDF for .NET【页面设置】演示:打开 PDF 时自动显示书签或缩略图
java·pdf·.net
m51271 小时前
LinuxC语言
java·服务器·前端
IU宝1 小时前
C/C++内存管理
java·c语言·c++