mybatis mapper.xml生成_使用MyBatis-Plus兵器栈开发集合

使用MyBatis-Plus兵器栈开发集合

一、技术预研

MyBatis-Plus是一款优秀的MyBatis增加工具,特色有集成了Lambda表达式,简化了SQL开发,而且具有强大的代码生成工具。在进行单表操作时,MyBatis-Plus完全不需要写一行sql代码,就能实现增删改查的全部功能,是一款不可多得的工具。提供了like、in、group by、where、and、or、desc、order by等所有操作,非常强大,与Spring Boot的完美整合更是广大程序员的福音。而且支持分页插件,几乎支持市面上所有的流行数据库以及国产数据库。

1.1 支持数据库

  • mysql 、 mariadb 、 oracle 、 db2 、 h2 、 hsql 、 sqlite 、 postgresql 、 sqlserver
  • 达梦数据库 、 虚谷数据库 、 人大金仓数据库

二、简单实例

现有一张 User 表,其表结构如下:

0230a611be1b878a49d11d355fa8bd28.png

其对应的数据库 Schema 脚本如下:

8a4a72ce48f9d4d29fbc19e86caed0d4.png

2.导入相应的依赖

7d87f8a613ed868dc7c253862c3235e9.png

说明:我们使用mybatis-plus可以节省我们大量的代码,尽量不要同时导入mybatis和mybatis-plus!

3.连接数据库

a2568a2663945cf15c66c0545e2ee5a8.png

4.编写代码

使用mybatis-plus之后。只需要pojo、dao接口、及其他接口

编写实体类 User.java(此处使用了 Lombok 简化代码)

1c39ba26600195daca5a92b52f9e75c1.png

编写Mapper类 UserMapper.java

a7e7de5bebc6ef02074b1a69ad826b1c.png

在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹:

576d7cfcbd0bbd51323ce93ac9ae649e.png

添加测试类,进行功能测试:

5c4a719f5c26f5d975eec649380fbf96.png

控制台输出:

e33c29598d6b7f964f6ee7549e12e138.png

5.小结

通过以上几个简单的步骤,我们就实现了 User 表的 CRUD 功能,甚至连 XML 文件都不用编写!

从以上步骤中,我们可以看到集成MyBatis-Plus非常的简单,只需要引入 starter 工程,并配置 mapper 扫描路径即可。

但 MyBatis-Plus 的强大远不止这些功能,想要详细了解 MyBatis-Plus 的强大功能?那就继续往下看吧!

三、配置日志

我们所用的sql现在是不可见的,我们希望知道他是怎么执行的,所以我们必须要查看日志!

4890f948c4e5eb4058c5a159a6d3ef39.png

这样就能查看到日志文件

7abc4a286fdf2da704a619b5ff568625.png

四、CRUD扩展

Insert 插入

d620d769f52cc9f460a3405728756ae6.png

参数说明

395c26a675ef81f476ac1424d33a0b49.png

举例测试

390f6b83897bf604fad79f9fb57f15bb.png

数据库插入的id为全局默认的id(ID_WORKER)

主键生成策略

(1)分布式系统唯一id生成

(2)雪花算法

我们需要配置主键自增

1、实体类字段上 @TableId(type =IdType.AUTO)

aff59abfd3035642b4e304ec8f51f5f2.png

2、数据库字段一定要是自增的

4.1更新操作

e9ca5da2eb70dbd49c65a965dd541cac.png

参数说明

91709713bca379acb35ba7c8bbb04bc1.png

举例测试

bc28af1720ac56ccc0c928321816b55b.png

创建时间、修改时间!这些个操作一遍都是自动化完成,我们不希望手动更新!

面试中经常会问到乐观锁,悲观锁

乐观锁:顾名思义十分乐观,它总是被认为不会出现问题,无论干什么都不去上锁!如果出现了问题,再次更新测试

悲观锁:顾名思义十分悲观,它总是出现问题,无论干什么都会上锁!再去操作!

乐观锁实现方式

  • 取出记录是,获取当前version
  • 更新时,带上这个version
  • 执行更新事,set version=newVersion where version =oldVersion
  • 如果version不对,就更新失败
ae7b8d2c6e161826146cd6978bfe2d4f.png

1、表中创建乐观锁字段version 默认值为1

7f8c5e311a623e944b19194e01ee3f35.png

2、同步实体类

1cdbfe496d730beda9f6d9db3ec49702.png

3、注册组件 (config包下)

b16595b1a1ff57d556a6629c810cd816.png

特别说明:

支持的数据类型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime

整数类型下 newVersion = oldVersion + 1

newVersion 会回写到 entity 中

仅支持 updateById(id) 与 update(entity, wrapper) 方法

在 update(entity, wrapper) 方法下, wrapper 不能复用!!!

测试一下

6ca5a9cb71ad4e14e9a99c4607a45085.png

4.2查询操作

754d19e7abf51ac8ea58178d30c6b067.png
参数说明
1d2be76cf3ab0374ff4e6ea327c8ce64.png

实例测试

4c6732710e228dae91e25692da78b0e4.png

分页查询

分页在网站使用的十分多

1、原始的limit进行分页

2、pageHelper 第三方插件

3、Mybatis-Plus中也内置了分页插件!

1、配置拦截器组件即可

5ce6e9d9a1e65b521be71e2bf6914909.png

2、写测试

c742f57c25e2b0a3278da3a0744af30b.png

4.3删除

dea22fa6f0ab78af5c8da0661e1bb572.png
#参数说明
0e157a9fe05f76a8b1744811a494c507.png
eab7671732830153c3722e6f7ddb79b8.png

五、条件构造器

十分重要:Wrapper

我们写一些复杂的sql可以用它来完成

现做几个实例看看:

8f23b13a39088138008eb9cdba5ed74c.png
f3f974b7faffafd63bc197eea6c456d0.png

六、代码自动生成器

dao、pojo、conrtroller、service自动生成

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、 Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

1ff87a3044f9ecbf3c9d7095e5b2da1e.png
fbf7a862020631a7b374816da6e053ad.png
703a59b296cfcd0948d2ce6bcd0ce44e.png

七、总结

使用MyBatis-Plus兵器栈真的极大地丰富了我们的开发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值