mybatis-plus 使用心得

mybatis-plus

官方文档

plus提供了许多对数据库的操作api,本文以mysql为例简单说明 对数据库操作的框架有 spring提供的jpa,tk-mapper,mybatis-plus最为欢迎,其中我是用最多的用的最顺手的为plus, 主要说一些使用心得和简单的操作语法

不开喜欢上来知直接粘贴一大堆代码,没什么用,直接说核心 ,后面在开法中使用心得会慢慢补上来,因为crud过于简单就没有写什么代码,后面如果遇到复杂的需求 会慢慢补上来

先啰嗦几句

在java8中有很多新特性,其中能提高开发性能的就是lambda表达式和stream流,一般lambda表达式在开发中可能不经常看到,如果有兴趣看源码的话,不难发现很多源码是有lambda的身影的,其中Stream中很多方法的形参就是lambda接口,两者结合能对数据结构做出非常灵活的操作,Stream本身就是流式编程的思想, 在开发中如果对于集合操作,使用Stream+lambda能写出绝对简洁 可读性非常高 性能不错的代码,而在plus中我们对条件的构造,一般都会使用条件构造,而在plus中也有支持lambda的条件构造器,这是我最喜欢的,因为可读性非常强,代码阅读性好,简单的展示段代码体验一下

// 我想得到没有删除的账号,开通时间在一定范围内,并且账号含有 admin 字符的账号集合
		LambdaQueryWrapper<User> lambdaQuery = Wrappers.lambdaQuery();
		lambdaQuery.like(User::getAccount,"admin")
				.eq(User::getDeleteFlag,0)
				.between(User::getCreatetime,"2020-01-01","2020-02-02");
		List<User> users = userMapper.selectList(lambdaQuery);
		//得到用户集合后我通过用户状态分组,然后的到用户名字的集合
				Map<Integer, List<String>> collect = users.stream()
				.collect(Collectors.groupingBy(
						User::getState, 
						Collectors.mapping(User::getName, Collectors.toList()
						))
				);

很简单需求,如果手写sql不写代码也能实现,结合plus的条件构造,java8的新特性写出来的代码同上,简洁性 可读性非常高,这就是我对plus吸引我的地方,完成了简单的条件构造 也支持链式编程

在搭建工程

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

yaml

server:
  port: 9004 # 服务访问端口号
spring:
  application:
    name: tensquare-article #服务名称
  datasource: # 数据库连接四大属性
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.200.128:3306/tensquare_article?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: root
logging:
  level:
    root: debug
mybatis-plus:
  mapper-locations: classpath:/mapper/*Mapper.xml

启动类

@SpringBootApplication
@MapperScan("你mapper存放的包名全路径")
public class ArticleApplication {
    public static void main(String[] args) {
        SpringApplication.run(ArticleApplication.class, args);
    }
	/**
	 * 分布式自增id -plus提供
	 * @return
	 */
	@Bean
	public Sequence sequence(){
		return  new Sequence();
	}
// plus 分页插件
@Configuration
public class MyBatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    	}
	}
}
@Data
@TableName("sys_user") //数据库表名
public class User  implements Serializable {
	//数据库id是自增的 所以这里自增,insert数据不需要执行id 当然你也可以配置其他属性
    @TableId(type = IdType.AUTO) 
    private Integer id;
    private String username;
    private String password;
    @TableField("status") //执行数据库中字段名 一致的话可以不加此注解
    private Integer status;

    @TableField(exist = false)//不是数据库表中字段 就要打上 falsh标记
    private List<Role> roles;
}


plus中id配置枚举类

public enum IdType {
    /**
     * 数据库ID自增
     */
    AUTO(0),
    /**
     * 该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)
     */
    NONE(1),
    /**
     * 用户输入ID
     * <p>该类型可以通过自己注册自动填充插件进行填充</p>
     */
    INPUT(2),

    /* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */
    /**
     * 分配ID (主键类型为number或string),
     * 默认实现类 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(雪花算法)
     *
     * @since 3.3.0
     */
    ASSIGN_ID(3),
    /**
     * 分配UUID (主键类型为 string)
     * 默认实现类 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(UUID.replace("-",""))
     */
    ASSIGN_UUID(4),
    /**
     * @deprecated 3.3.0 please use {@link #ASSIGN_ID}
     */
    @Deprecated
    ID_WORKER(3),
    /**
     * @deprecated 3.3.0 please use {@link #ASSIGN_ID}
     */
    @Deprecated
    ID_WORKER_STR(3),
    /**
     * @deprecated 3.3.0 please use {@link #ASSIGN_UUID}
     */
    @Deprecated
    UUID(4);

    private final int key;

    IdType(int key) {
        this.key = key;
    }
}

//mapper
public interface UserMapper extends BaseMapper<User> {
}

 public interface UserService extends IService<User> {
}
@Service
@Transactional(rollbackFor = Exception.class)
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {}

这样的话我们就可以再实现类中用到框架给我们提供的方法,很多方法源码会有中文注释,这样的话 入门就轻松很多,只要你继承了他的类,就可以使用所有方法,日常的数据库操作 直接秒杀

先看框架为我们提供的方法

顶级 Service

public interface IService {}
在这里插入图片描述

mapper接口方法

public interface BaseMapper extends Mapper {}
在这里插入图片描述

可以看到mapper中和service中有很多相似的方法,但是也有不同的.他们没什么区别,至少从使用中感觉不到区别,注意看每个方法, 很多方法的参数都是 Wrapper 实际是就是条件构造器. 掌握了这个玩意,plus基本就能得心应手

条件构造器结构类图

LambdaQueryWrapper

在这里插入图片描述

QueryWrapper

在这里插入图片描述

在开发中我使用最多的就是这个两个构造器, 一个是LambdaUpdateWrapper 另一个 QueryWrapper
有了这两个对象,就可以构造条件 开发中不推荐直接 new 而是使用plus提供的工具类去得到他们,使用起来真的很简单,能满足多数需求

在这里插入图片描述

使用起来真的很简单,很灵活,能满足多数需求,在使用过成中过于简单,我主要记录一些平时我工作中常用的,有些不常用的我也不懂,请大家多多指教,官网里对于构造器的用法也有很多说明,这里不做赘述,如有时间后期会更新一些追源码的过程来分享,首次写博客,写的不好万望海涵!!!

### 回答1: MyBatis-Plus是一个基于MyBatis的增强工具,提供了一种简化开发的方式。相比于MyBatisMyBatis-Plus在持久层代码的编写中提供了更多的便利功能,使得开发人员能够更加高效地完成数据库操作。 要下载MyBatis-Plus的快速入门文档,有以下几种方式: 1. 官方网站:MyBatis-Plus的官方网站(https://baomidou.com/)上提供了详细的文档和教程资源,包括快速入门文档。在官网上,你可以找到快速入门文档的下载链接,并根据自己的需要进行下载。 2. GitHub:MyBatis-Plus的项目在GitHub上有一个仓库,地址是(https://github.com/baomidou/mybatis-plus)。在该仓库中,你可以找到各种文档和示例代码。在仓库的README文件中,会提供快速入门文档的链接,你可以直接点击链接下载文档。 3. 知识分享平台:如优快云、简书、博客园等,有很多博主或开发者会分享自己的经验和学习心得,包括MyBatis-Plus的快速入门文档。你可以在这些平台上进行搜索,找到适合自己的教程并下载学习。 不论你选择哪一种方式下载MyBatis-Plus的快速入门文档,建议你在学习前先了解一些基础的MyBatis知识,这样能更好地理解和应用MyBatis-Plus框架的功能。祝你学习顺利! ### 回答2: 要下载MyBatis-Plus快速入门文档,可以按照以下步骤进行: 1. 打开浏览器,进入MyBatis-Plus官方网站(https://mp.baomidou.com/)。 2. 在网页顶部的菜单栏中,找到并点击“文档”选项。 3. 进入文档页面后,可以看到各个版本的文档列表。根据自己使用MyBatis-Plus版本,选择相应的文档版本。 4. 点击选择的文档版本,进入该版本的文档页面。 5. 在文档页面中,可以看到各个章节的内容。浏览页面找到“快速入门”章节。 6. 点击“快速入门”章节,即可查看该章节的详细内容。 7. 如果需要将文档保存到本地,我们可以进行以下操作:选中文档内容,右键点击“复制”或者使用快捷键Ctrl+C,将内容复制到剪贴板中。 8. 打开文本编辑器(例如记事本、Word等),粘贴剪贴板中的内容(右键点击“粘贴”或使用快捷键Ctrl+V)。 9. 保存文件,选择保存路径并命名文档文件。 通过以上步骤,您就可以成功下载MyBatis-Plus快速入门文档并保存到本地了。希望这个回答对您有帮助。 ### 回答3: 要下载MyBatis-Plus的快速入门文档,可以按照以下步骤进行操作: 1. 打开浏览器,进入MyBatis-Plus官方网站(https://mp.baomidou.com/)。 2. 在页面上方的菜单栏中,可以看到一个名为“文档”的选项,鼠标悬停在上面。 3. 在弹出的下拉菜单中,选择“快速入门”。 4. 进入快速入门页面后,可以看到文档的内容。 5. 如果需要下载文档,可以找到页面上方的一个名为“下载PDF”的按钮,点击它。 6. 浏览器会开始下载一个PDF文件,即MyBatis-Plus的快速入门文档。 7. 下载完成后,可以在浏览器的下载目录中找到该文件。 8. 双击打开文件,即可查看和学习MyBatis-Plus的快速入门内容。 通过以上步骤,你可以成功下载并使用MyBatis-Plus的快速入门文档,帮助你更好地理解和使用这个框架。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值