新兴崛起的优雅框架Mybatis-Flex

目录

介绍

基础使用

简单入门

 插入数据

insertSelective

 insertOrUpdate

insertBatch 

 注意事项

删除数据

​编辑 条件删除

 批量删除

 注意事项

 更新数据

​编辑

条件更新

UpdateEntity使用

 UpdaerWrapper使用

注意事项

 查询数据

查询一条数据

selectOneById​编辑

 selectOneByMap

 selectOneByCondition

 selectOneByQuery

查询多条数据

 查询单列数据

查询Map数据 

 映射查询

​编辑 实体集合映射

 单列数据集合映射

 QueWrapper

原生写法 

lamabada表达式写法 

字符串写法 

三者混用写法

​编辑 CPI

监听器

onInsert和onUpdate

onSet

逻辑删除 

 乐观锁

数据脱敏

flex内置脱敏

自定义数据脱敏 

跳过脱敏 

关联查询

分页查询

 xml文件配置分页

 Active Record 

 代码生成


介绍

MyBatis-Flex是一个Java持久层框架,旨在提供简化和灵活的数据库访问解决方案。它通过巧妙地结合Java对象和关系数据库表,将数据访问过程变得更加优雅。

这个框架通过使用XML配置文件来定义SQL映射,使得数据库操作变得直观且可维护。它为开发人员提供了强大的工具,可以轻松地编写和执行数据库查询,而无需过多关注底层的数据库细节。

MyBatis-Flex还引入了动态SQL的概念,允许根据不同的条件来动态生成SQL语句。这使得查询变得非常灵活和可定制,适应了各种复杂的业务需求。

此外,MyBatis-Flex还提供了缓存机制,可以显著提高查询性能。它还支持批量操作,可以大大减少与数据库的通信次数,提高数据操作的效率。

基础使用

简单入门

MyBatis-Flex - MyBatis-Flex 官方网站

根据官方文档的快速开始步骤操作即可

新兴崛起的优雅框架Mybatis-Flex_第1张图片

这里也简单演示下

引入所需依赖

新兴崛起的优雅框架Mybatis-Flex_第2张图片

yml文件配置

 新兴崛起的优雅框架Mybatis-Flex_第3张图片

实体类建表和mapper文件 根据创建官网配置即可

添加配置类打印控制台sql

新兴崛起的优雅框架Mybatis-Flex_第4张图片

根据官网配置建表查询数据库

新兴崛起的优雅框架Mybatis-Flex_第5张图片

编写测试类 

新兴崛起的优雅框架Mybatis-Flex_第6张图片

注意target目录下的编译文件

 新兴崛起的优雅框架Mybatis-Flex_第7张图片

这里会对每个实体生成一个Def文件

点击查看

新兴崛起的优雅框架Mybatis-Flex_第8张图片

 后面flex封装的api查询基本都会围绕这个Def文件来进行操作,,注意这个文件只有在编译后才会生成在target目录里,在原先源码文件里是不存在的

再查看一个单个查询名字为张三的

新兴崛起的优雅框架Mybatis-Flex_第9张图片

注意这里需要事先静态引入前面的Def文件,没有Def文件的先进行编译下再引入

 新兴崛起的优雅框架Mybatis-Flex_第10张图片

如果不引入这里的全拼是:

 新兴崛起的优雅框架Mybatis-Flex_第11张图片

再来看一组插入的方法,在MP中,默认新增和修改的api在实体字段为null时会默认不更新或者插入为null的字段,那如果刚好碰到需要将字段插入或者更新为null的场景时Mp处理起来就比较麻烦些

在flex里面可以手动设置是否忽略null字段的更新

新兴崛起的优雅框架Mybatis-Flex_第12张图片

 新兴崛起的优雅框架Mybatis-Flex_第13张图片

 插入数据

 在前面简单使用的时候已经演示过insert的手动设置是否忽略null值的情况了,这里就不再演示insert了

insertSelective

为该表添加一个字段性别 ,0:女 ,1:男  默认值:2 不男不女

 新兴崛起的优雅框架Mybatis-Flex_第14张图片

注意实体类中要添加相对应的字段属性,并重新编译,此时再使用insertSelective和手动设置不忽略null的insert插入数据查看有什么区别

观察sql区别

新兴崛起的优雅框架Mybatis-Flex_第15张图片

 查看数据库结果

新兴崛起的优雅框架Mybatis-Flex_第16张图片

 insertOrUpdate

没有主键情况

新兴崛起的优雅框架Mybatis-Flex_第17张图片

 新兴崛起的优雅框架Mybatis-Flex_第18张图片

 有主键情况

新兴崛起的优雅框架Mybatis-Flex_第19张图片

 新兴崛起的优雅框架Mybatis-Flex_第20张图片

insertBatch 

可以看到直接就是批量插入的sql,不忽略null值

新兴崛起的优雅框架Mybatis-Flex_第21张图片

 新兴崛起的优雅框架Mybatis-Flex_第22张图片

 注意事项

新兴崛起的优雅框架Mybatis-Flex_第23张图片

删除数据

新兴崛起的优雅框架Mybatis-Flex_第24张图片

先查看下现在表中有的数据

新兴崛起的优雅框架Mybatis-Flex_第25张图片 条件删除

 新兴崛起的优雅框架Mybatis-Flex_第26张图片

 新兴崛起的优雅框架Mybatis-Flex_第27张图片

 新兴崛起的优雅框架Mybatis-Flex_第28张图片

 批量删除

新兴崛起的优雅框架Mybatis-Flex_第29张图片

 新兴崛起的优雅框架Mybatis-Flex_第30张图片

 注意事项

新兴崛起的优雅框架Mybatis-Flex_第31张图片

 更新数据

新兴崛起的优雅框架Mybatis-Flex_第32张图片

条件更新

默认忽略null值

先来看下数据库原有的数据

新兴崛起的优雅框架Mybatis-Flex_第33张图片

 新兴崛起的优雅框架Mybatis-Flex_第34张图片

 新兴崛起的优雅框架Mybatis-Flex_第35张图片

 新兴崛起的优雅框架Mybatis-Flex_第36张图片

 新兴崛起的优雅框架Mybatis-Flex_第37张图片

 指定年龄加3新兴崛起的优雅框架Mybatis-Flex_第38张图片

UpdateEntity使用

myabtis-flex在更新中是默认忽略null值的,但是如果有这样一个场景,不让其忽略null,但是只把实体的指定字段入库时设置为null,显然只是设置不忽略null是不可行的,因为只设置不忽略null会把所有字段都不忽略,而这时只想让指定字段不忽略,就需要用到UpdateEntity了

查看当前数据库数据

新兴崛起的优雅框架Mybatis-Flex_第39张图片

 新兴崛起的优雅框架Mybatis-Flex_第40张图片

 新兴崛起的优雅框架Mybatis-Flex_第41张图片

可以看到虽然account实体中age没有set值,也就是age字段也是null,但是sql打印中并没有更新age字段 

 UpdaerWrapper使用

先查看目前数据库数据

新兴崛起的优雅框架Mybatis-Flex_第42张图片

新兴崛起的优雅框架Mybatis-Flex_第43张图片

 新兴崛起的优雅框架Mybatis-Flex_第44张图片

注意事项

新兴崛起的优雅框架Mybatis-Flex_第45张图片

 查询数据

查询一条数据

新兴崛起的优雅框架Mybatis-Flex_第46张图片

注意前三者都最后都只会返回一条数据, 也就是说如果查询出来是多条符合数据的数据前三个都不会报错,但是最后一个会报错

 还是先看下数据库数据

新兴崛起的优雅框架Mybatis-Flex_第47张图片

selectOneById新兴崛起的优雅框架Mybatis-Flex_第48张图片

查看下源码 根据主键id进行查询,返回的肯定是一条数据

新兴崛起的优雅框架Mybatis-Flex_第49张图片

 selectOneByMap

新兴崛起的优雅框架Mybatis-Flex_第50张图片

 查看源码可以看到该方法在最后的sql拼接了limit 1从实现只返回一条数据

新兴崛起的优雅框架Mybatis-Flex_第51张图片

 selectOneByCondition

新兴崛起的优雅框架Mybatis-Flex_第52张图片

 查看源码可以知晓该方法也是拼接了limit 1 

新兴崛起的优雅框架Mybatis-Flex_第53张图片

 selectOneByQuery

新兴崛起的优雅框架Mybatis-Flex_第54张图片

 查看源码  后面什么都没有拼接

新兴崛起的优雅框架Mybatis-Flex_第55张图片

 这里测试下如果返回的是多个符合条件的数据会怎么样

新兴崛起的优雅框架Mybatis-Flex_第56张图片

年龄大于20的数据有两条,直接报错

查询多条数据

新兴崛起的优雅框架Mybatis-Flex_第57张图片

 新兴崛起的优雅框架Mybatis-Flex_第58张图片

查询多条数据的指定字段

 新兴崛起的优雅框架Mybatis-Flex_第59张图片

其他方法不再演示,和之前的用法大同小异

 查询单列数据

新兴崛起的优雅框架Mybatis-Flex_第60张图片

 新兴崛起的优雅框架Mybatis-Flex_第61张图片

查询Map数据 

新兴崛起的优雅框架Mybatis-Flex_第62张图片

 新兴崛起的优雅框架Mybatis-Flex_第63张图片

 映射查询

新兴崛起的优雅框架Mybatis-Flex_第64张图片

先看下数据库数据

新兴崛起的优雅框架Mybatis-Flex_第65张图片 实体集合映射

 新建一个vo实体进行映射

新兴崛起的优雅框架Mybatis-Flex_第66张图片

 新兴崛起的优雅框架Mybatis-Flex_第67张图片

 单列数据集合映射

新兴崛起的优雅框架Mybatis-Flex_第68张图片

 QueWrapper

 关于QueryWrapper的使用官网提供的也很详细了

新兴崛起的优雅框架Mybatis-Flex_第69张图片

这里只做简单演示,具体使用方法可以参看官网

原生写法 

新兴崛起的优雅框架Mybatis-Flex_第70张图片

新兴崛起的优雅框架Mybatis-Flex_第71张图片  

支持所有原sql的格式拼接

新兴崛起的优雅框架Mybatis-Flex_第72张图片

还有许多原生mysql的聚合函数,具体使用参考官网 

新兴崛起的优雅框架Mybatis-Flex_第73张图片

lamabada表达式写法 

新兴崛起的优雅框架Mybatis-Flex_第74张图片

字符串写法 

新兴崛起的优雅框架Mybatis-Flex_第75张图片

三者混用写法

新兴崛起的优雅框架Mybatis-Flex_第76张图片 CPI

 mybatis-Flex对queryWrapper提供了CPI来进行QueryWrapper的set和get

新兴崛起的优雅框架Mybatis-Flex_第77张图片

 举例使用

新兴崛起的优雅框架Mybatis-Flex_第78张图片

 新兴崛起的优雅框架Mybatis-Flex_第79张图片

 查询出QueryWrapper查询的列名  其他具体使用查看官网即可

监听器

onInsert和onUpdate

用户在操作插入h和更新数据时可以指定监听器来进行监听用户的操作,从而自动插入或者更新一些数据,比如创建时间和更改时间等

还是先查看数据库

新兴崛起的优雅框架Mybatis-Flex_第80张图片

记得代码中实体属性要与数据库一一对应

 新增监听器

新兴崛起的优雅框架Mybatis-Flex_第81张图片

 调用监听器

新兴崛起的优雅框架Mybatis-Flex_第82张图片

 测试

新兴崛起的优雅框架Mybatis-Flex_第83张图片

可以看到这里只设置了userName,但是打印sql和实体的创建时间和idNumber都有值,插入的监听器将这两个字段进行设值

新兴崛起的优雅框架Mybatis-Flex_第84张图片 修改监听器

新兴崛起的优雅框架Mybatis-Flex_第85张图片

 新兴崛起的优雅框架Mybatis-Flex_第86张图片

onSet

监听实体的set方法

先查看数据库

新兴崛起的优雅框架Mybatis-Flex_第87张图片

实现字典回写

 添加性别字典字段新兴崛起的优雅框架Mybatis-Flex_第88张图片

 书写set监听器

新兴崛起的优雅框架Mybatis-Flex_第89张图片

新兴崛起的优雅框架Mybatis-Flex_第90张图片

 测试

新兴崛起的优雅框架Mybatis-Flex_第91张图片

还有全局监听器不再演示,具体操作参考官网即可

逻辑删除 

新兴崛起的优雅框架Mybatis-Flex_第92张图片

 为数据库表添加逻辑删除字段 del_flag 0:flase 1:true

新兴崛起的优雅框架Mybatis-Flex_第93张图片

 新兴崛起的优雅框架Mybatis-Flex_第94张图片

测试逻辑删除查询数据

 新兴崛起的优雅框架Mybatis-Flex_第95张图片

可以看到默认只查询了delFlag为0的数据

测试删除数据

 新兴崛起的优雅框架Mybatis-Flex_第96张图片

 新兴崛起的优雅框架Mybatis-Flex_第97张图片

删除数据也是走的update语句

跳过逻辑删除处理

 新兴崛起的优雅框架Mybatis-Flex_第98张图片

走的是delete语句

新兴崛起的优雅框架Mybatis-Flex_第99张图片

 乐观锁

新兴崛起的优雅框架Mybatis-Flex_第100张图片

 添加版本号字段

新兴崛起的优雅框架Mybatis-Flex_第101张图片

 新兴崛起的优雅框架Mybatis-Flex_第102张图片

新兴崛起的优雅框架Mybatis-Flex_第103张图片

 新兴崛起的优雅框架Mybatis-Flex_第104张图片

数据脱敏

新兴崛起的优雅框架Mybatis-Flex_第105张图片

 新兴崛起的优雅框架Mybatis-Flex_第106张图片

flex内置脱敏

数据库添加手机号字段进行测试

 新兴崛起的优雅框架Mybatis-Flex_第107张图片

 ​​​​​​​新兴崛起的优雅框架Mybatis-Flex_第108张图片

 查询测试

 新兴崛起的优雅框架Mybatis-Flex_第109张图片

自定义数据脱敏 

我们在使用时如果flex提供的脱敏方式不够满足我们的需求时还可以通过自定义脱敏方式来进行脱敏

将数据库中的id_number字段中的小写英文字母全部大写来模拟脱敏处理

新兴崛起的优雅框架Mybatis-Flex_第110张图片

 书写自定义脱敏

新兴崛起的优雅框架Mybatis-Flex_第111张图片

 配置注册全局脱敏

新兴崛起的优雅框架Mybatis-Flex_第112张图片

字段使用

 新兴崛起的优雅框架Mybatis-Flex_第113张图片

测试

 新兴崛起的优雅框架Mybatis-Flex_第114张图片

小写全部脱敏为大写

跳过脱敏 

新兴崛起的优雅框架Mybatis-Flex_第115张图片

刚才脱敏的手机号和idNumber字段都明文显示了 

关联查询

再创建两个表

新兴崛起的优雅框架Mybatis-Flex_第116张图片

 插入模拟数据

新兴崛起的优雅框架Mybatis-Flex_第117张图片

 新兴崛起的优雅框架Mybatis-Flex_第118张图片

 

主表添加阵营id字段和部门(称号)字段

编造模拟插入两个从表数据 以便进行联表查询

 新兴崛起的优雅框架Mybatis-Flex_第119张图片

创建表对应实体层和持久层 不再截图演示

先查看下联表的sql写法

新兴崛起的优雅框架Mybatis-Flex_第120张图片

 配置映射vo对象

 新兴崛起的优雅框架Mybatis-Flex_第121张图片

 

查询测试

新兴崛起的优雅框架Mybatis-Flex_第122张图片

查看sql

SELECT
	`a`.`id`,
	`a`.`age`,
	`a`.`sex`,
	`a`.`phone`,
	`a`.`camp_id`,
	`a`.`dept_id`,
	`a`.`version`,
	`a`.`birthday`,
	`a`.`id_number`,
	`a`.`user_name`,
	`a`.`create_date`,
	`a`.`update_date`,
	`b`.`id` AS `camp$id`,
	`b`.`troops`,
	`b`.`camp_name`,
	`c`.`id` AS `dept$id`,
	`c`.`dept_num`,
	`c`.`dept_name` 
FROM
	`tb_account` AS `a`
	LEFT JOIN `camp` AS `b` ON `a`.`camp_id` = `b`.`id`
	LEFT JOIN `dept` AS `c` ON `a`.`dept_id` = `c`.`id` 
WHERE
	`a`.`del_flag` = 0

分页查询

新兴崛起的优雅框架Mybatis-Flex_第123张图片

 新兴崛起的优雅框架Mybatis-Flex_第124张图片

 xml文件配置分页

使用官网提供模板demo

新兴崛起的优雅框架Mybatis-Flex_第125张图片

 新兴崛起的优雅框架Mybatis-Flex_第126张图片

 新兴崛起的优雅框架Mybatis-Flex_第127张图片

 Active Record 

参考官网介绍 

新兴崛起的优雅框架Mybatis-Flex_第128张图片

实体属性继承Model

新兴崛起的优雅框架Mybatis-Flex_第129张图片

 

新兴崛起的优雅框架Mybatis-Flex_第130张图片

 新兴崛起的优雅框架Mybatis-Flex_第131张图片

 新兴崛起的优雅框架Mybatis-Flex_第132张图片

 注意使用Record模式时在1.5.9版本时实体字段和数据库字段一定要完全对应不然会报错抛异常

新兴崛起的优雅框架Mybatis-Flex_第133张图片

 

新兴崛起的优雅框架Mybatis-Flex_第134张图片

 

新兴崛起的优雅框架Mybatis-Flex_第135张图片

 代码生成

你可能感兴趣的:(mybatis,java,mysql,java,mybatis-flex,mysql,mybatis,优雅,让mybatis飞起来)