MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率

入门案例



继承BaseMapper<自己的domain类> 就可以了,自动装配后直接会有各种方法

标准数据层开发



MP分页查询功能



条件查询



NULL值控制
我们封装个新的userQuery类继承user类,再新建成员变量private Integer age2;
这样我们测试,就可以用set方法设置age跟age2
当不为null的时候才执行各自的代码
查询投影

as 后面也就是起别名
查询条件



更多查询条件设置参看https://mybatis.plus/guide/wrapper.html#abstractwrapper
字段映射跟表明映射


增删改

上面的图为雪花算法,总共64位

全局配置,我们就不用一个一个配置了
多记录操作

逻辑删除


乐观锁



Version 的修改是 version = version+1;
执行前先查询,user就会携带当前的version:

如果两个人一起想修改同一个id下的name,他们一开始得到的version是一样的
当任意一个完成修改的时候,version就加一了
那么另一个人还用一开始得到的version作为条件修改,就没办法完成,这也就是抢购的原理
代码生成器




public static void main(String[] args) {
//1.获取代码生成器的对象
AutoGenerator autoGenerator = new AutoGenerator();
//设置数据库相关配置
DataSourceConfig dataSource = new DataSourceConfig();
dataSource.setDriverName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC");
dataSource.setUsername("root");
dataSource.setPassword("root");
autoGenerator.setDataSource(dataSource);
//设置全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir(System.getProperty("user.dir")+"/mybatisplus_04_generator/src/main/java"); //设置代码生成位置
globalConfig.setOpen(false); //设置生成完毕后是否打开生成代码所在的目录
globalConfig.setAuthor("黑马程序员"); //设置作者
globalConfig.setFileOverride(true); //设置是否覆盖原始生成的文件
globalConfig.setMapperName("%sDao"); //设置数据层接口名,%s为占位符,指代模块名称
globalConfig.setIdType(IdType.ASSIGN_ID); //设置Id生成策略
autoGenerator.setGlobalConfig(globalConfig);
//设置包名相关配置
PackageConfig packageInfo = new PackageConfig();
packageInfo.setParent("com.aaa"); //设置生成的包名,与代码所在位置不冲突,二者叠加组成完整路径
packageInfo.setEntity("domain"); //设置实体类包名
packageInfo.setMapper("dao"); //设置数据层包名
autoGenerator.setPackageInfo(packageInfo);
//策略设置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setInclude("tbl_user"); //设置当前参与生成的表名,参数为可变参数
strategyConfig.setTablePrefix("tbl_"); //设置数据库表的前缀名称,模块名 = 数据库表名 - 前缀名 例如: User = tbl_user - tbl_
strategyConfig.setRestControllerStyle(true); //设置是否启用Rest风格
strategyConfig.setVersionFieldName("version"); //设置乐观锁字段名
strategyConfig.setLogicDeleteFieldName("deleted"); //设置逻辑删除字段名
strategyConfig.setEntityLombokModel(true); //设置是否启用lombok
autoGenerator.setStrategy(strategyConfig);
//2.执行生成操作
autoGenerator.execute();
}



![[附源码]Python计算机毕业设计SSM基于JAVA语言的宠物寄养管理(程序+LW)](https://img-blog.csdnimg.cn/b106f4b83f3141ec938f60d3336b7295.png)

![[附源码]Python计算机毕业设计SSM基于web的社团管理系统(程序+LW)](https://img-blog.csdnimg.cn/8ad3feb0d56b4a108c6490c7be94721b.png)


![[附源码]计算机毕业设计的小说阅读系统Springboot程序](https://img-blog.csdnimg.cn/73d5602892d74fe2828e44483b16f316.png)



![[附源码]Nodejs计算机毕业设计基于Web课堂签到管理系统Express(程序+LW)](https://img-blog.csdnimg.cn/cb6e87ab6c944157a47ea5c78c6b1d4a.png)






