目录

  • 前言
  • 一、springboot整合mybatis-plus
  • 二、条件构造器
  • 2.1 QueryWrapper用于查询操作
  • 2.2 UpdateWrapper用于更新操作
  • 总结



前言

Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生----引用官方原话👀。

  1. 封装常用crud,减少xml编写
  2. 3.X系列支持lambda语法

一、springboot整合mybatis-plus

书接上文,请结合springboot整合mybatis
本文只记录整合mybatis-plus,本文侧重点在操作数据库层数据。

pom.xml 添加依赖

<!-- mybatisPlus 核心库 -->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.1.0</version>
    </dependency>

application-druid.yml 配置

# mybatis-plus相关配置
mybatis-plus:
  # xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
  mapper-locations: classpath:mapper/*.xml
  # 以下配置均有默认值,可以不设置
  global-config:
    db-config:
      #主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
      id-type: auto
      #字段策略 IGNORED:"忽略判断"  NOT_NULL:"非 NULL 判断")  NOT_EMPTY:"非空判断"
      field-strategy: NOT_EMPTY
      #数据库类型
      db-type: MYSQL
  configuration:
    # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
    map-underscore-to-camel-case: true
    # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
    call-setters-on-nulls: true
    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

实体类 User.java

//实际表名和类名不一致时,需指定表名
@TableName("sys_user")
public class User {
	//@TableId(type = IdType.AUTO)
    //private Long id;
    private String username;
    private String password;
  	//省略get、set
}

启动类加上@MapperScan

@SpringBootApplication
//@MapperScan和dao层添加@Mapper注解意思一样
@MapperScan(basePackages = "com.wudixiaofei.springbootdemo.mapper")
public class SpringbootDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemoApplication.class, args);
    }
}

UserMapper接口继承BaseMapper

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

UserService接口继承IService

public interface UserService extends IService<User>{}

UserServiceImpl实现层继承ServiceImpl

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

UserController.java

@Controller
public class UserController {

    @Autowired
    UserServiceImpl userServiceImpl;
    
    @GetMapping("/getUserList")
    @ResponseBody
    public List<User> getUserList() {
        return userServiceImpl.list();
    }
}

二、条件构造器

官网链接-各个方法的解读

这部分主要还是避免操作xml文件,使用构造器完成sql:

2.1 QueryWrapper用于查询操作

说明:
继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取

2.2 UpdateWrapper用于更新操作

说明:
继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取!

UserController.java 示例

@GetMapping("/getUserQueryWrapper")
    @ResponseBody
    public List<User> getUserQueryWrapper() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(User::getUsername, "root");
        return userServicePlus.list(queryWrapper);
    }

总结

mybatis-plus只是对mybatis的增强,引入mybatis-plus后肉眼可见的,一些简单复杂度不高的业务,继承mybatis-plus的接口和条件构造器已经足够解决。