Mybatis-Plus

MyBatis vs JPA
MyBatis
优势:
1、sql语句可以自由控制,更灵活,性能较高
2、sql语句与代码分离,易于阅读和维护
3、提供xml标签,支持编写动态sql语句
劣势:
1、简单的crud也要写sql
2、xml中有大量的sql维护
3、自身功能有限,但支持plugin
JPA
优势:
1、移植比较好 jpql
2、提供了很多crud方法、开发效率高
3、对象化程度高

Mybatis-Plus 只做增强 不做改变
Mybatis-Plus

在这里插入图片描述
特性:
1、无侵入、损耗小、强大crud
2、支持lambda 多种数据库
3、主键自动生成,支持ActiveRecode
4、支持自定义全局通用操作,支持关键词自动转义
5、内置代码生成器、内置分页插件、内置性能分析插件
6、内置全局拦截插件、内置sql注入剥离器

pom:

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>

lombok

Create
新增
常用注解 @TableName("User") @TableId @TableField("name")
排除非表字段
1.transient 不能序列化
2.static 生成get set 全类一个
3.@TableField(exist=false)
Retrieve
普通查询
单个:selectById
多个:selectBatchIds
条件查询: selectByMap
条件构造器查询
selectOne

		QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name","roger").lt("age",30);
        User user1 = userMapper.selectOne(queryWrapper);

selectList

List<User> users = userMapper.selectList(queryWrapper);
		queryWrapper.apply("date_format(create_time,'%Y-%m-%d'='2019-04-02')").inSql("manager_id","select id form user where name like '王%'");
		// 格式化输出 可以避免 sql注入风险
        queryWrapper.apply("date_format(create_time,'%Y-%m-%d')={0}","2019-04-02").inSql("manager_id","select id form user where name like '王%'");

lambda 表达式 or 优先级小于 and

queryWrapper.likeRight("name", "王").and(wq->wq.lt("age",40).or().isNotNull("email"));

select中不查询全部的字段

queryWrapper.select("age","name").isNotNull("email");
反向排除
queryWrapper.select(User.class,info -> !info.getColumn().equals("name")).isNotNull("email");

condition 条件查询
创建条件构造器传入实体
allEq

在这里插入图片描述

selectMaps
selectObjs
selectCount
selectOne 确保一条记录

lambda条件构造器

LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.<User>lambdaQuery();
userLambdaQueryWrapper.like(User::getAge,"20")

条件构造器自定义sql

分页功能

@Configuration
public class MyBatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

		Page<User> page = new Page<User>(1, 2);
        IPage<User> iPage = userMapper.selectPage(page, queryWrapper);
        IPage<Map<String,Object>> mapIPage = userMapper.selectMapsPage(page, queryWrapper);

Update
id
update wrapper
lambda 更新

Delete
id
普通删除
条件构造器删除

AR模式 - Active Record
一是实体需要继承Model类,二是必须存在对应的原始mapper并继承baseMapper并且可以使用的前提下,才能使用此 AR 模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
主键策略 uuid auto id_work_str…

通用service
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值