目录
- 前言
- 一、springboot整合mybatis-plus
- 二、条件构造器
- 2.1 QueryWrapper用于查询操作
- 2.2 UpdateWrapper用于更新操作
- 总结
前言
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生----引用官方原话👀。
- 封装常用crud,减少xml编写
- 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的接口和条件构造器已经足够解决。