首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Mybatis】如何简单使用mybatis-plus,以及MybatisGenerator自动生成或者实现SQL语句

特性: 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作:内置通用 Mapper、通用...Model 类即可进行强大的 CRUD 操作 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere ) 内置代码生成器:采用代码或者 Maven 插件可快速生成...层的类去继承我们BaseMapper,BaseMapper用于快速实现单表的基本 CRUD(创建、读取、更新、删除)操作,这里的泛型主要我们需要操作的实体类; 1.3.3实体类...deleteById的操作,可以看到直接使用这里的方法既可以实现数据根据id进行删除,但是这里的删除是根据主键进行删除的我们这里id = #{ }内的参数默认是主键列; 但是如果我们没有设置id,主键甚至没有这个...= 1004; 可以发现不仅解决的id主键的问题,并且小编发现对于所有的增删改查几乎都是满足动态SQL的情况编写; 1.4.2条件构造 那么对于查询来说我们可以根据id那么是否还可以根据其他方式进行呢

30410

用了这么多年分页PageHelper,才发现自己一直用错了!

而作为通用分页接口page函数却在此处利用interface特有关键字default 直接声明了page函数的方法体body ” import com.github.pagehelper.IPage...实体即可 } 12345678 “ 在实际应用中,只需要声明我们通用的业务查询请求参数和响应结果即可 ” import dto.req.TemplateReqDto; import...} } 12345678910111213141516171819202122 “ 实现类中也只需要重写list方法体,将实际业务场景中需要处理的业务逻辑处理和查询方法写入其中,并不需要关心分页功能...,在不了解它更多意义上的作用前,可以作为我们分页参数声明的一种规范,而IPage中也只声明了三个方法,分别是pageNum/pageSize/orderBy的Getter方法,另外在源码分析中,我将会提到实现此接口更深层的意义...ISelect接口由开发自定义集合查询方式并由它内部执行,随后便返回PageInfo实体 前面我们有提到,PageHelper基于MyBatis拦截器达到分页的目的,那么为什么此处的ISelect.doSelect

9.6K43
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    springboot第一集:由springboot的dto拓展的内容

    在Spring Boot应用程序中,数据传输对象(DTO)最常用于表示业务模型对象或从应用程序或其服务端点传递的数据模型对象。DTO将这些模型对象中的数据转换为一种便于传输和有效处理的格式。...Mapping 映射 使用映射技术可以将一个DTO对象映射到另一个DTO对象,或将DTO对象映射到数据库中的实体对象。...Conversion 转换 有时候,我们需要将DTO中的一些属性从一种类型转换成另一种类型,例如将字符串转换成数字,或将日期字符串转换为Date对象。...Spring Boot的DTO(数据传输对象)通常是一个POJO(简单Java对象),主要用于在不同层之间传递数据,以及将数据库实体转换为更易于处理的对象。...DTO包含以下内容: 可读/可写属性:DTO包含用于表示数据的可读/可写属性,具有getter和setter方法。 静态工厂方法:DTO通常具有静态工厂方法,用于创建DTO对象。

    50430

    从零到一搭建基础架构(3)-base模块搭建上篇

    中业务code定义没有一个统一的规范 PO、DTO、BO、VO傻傻分不清楚 工具类泛滥,同一工程中StringUtil的引用有外部引入,有内部jar包引入还有自己定义的 异常定义混乱,导致在Spring...统一response拦截的地方区分业务异常与code错误困难 通用性高的枚举重复定义,比如是否枚举,男女枚举 通用的常量散落在业务系统中,导致各个业务系统中重复的逻辑定义 ......我通常在会对数据载体做如下分层 实体类型 描述 PO 持久化对象,实体属性与表字段一一对应,DAO层产生,在Service层被使用 BO 业务对象,聚合PO层数据,也可以多表关联数据查询聚合,内部会有属性的业务逻辑处理方法...层,这里我习惯与方法的出参,用于切合DTO与VO层的结构差异 Query 查询参数,controller层方法入参,接收前端的查询类型参数 Command 指令性型参数,例如用户新增,用户修改的数据载体...mode抽取 再比如,我们经常会返回给前端一些key/value结构的数据,这种结构是具备通用性,我们可以将这种具备高通用的DTO也放在base模块中供业务使用。

    44950

    如何设计一个通用的 Excel 导入导出功能?

    以JSON配置的方式去实现通用性和动态调整,当然,这个通用仍然存在一定的局限性,每个项目的代码风格都不同。...,可能是当前页数据导出,也可能是所有数据导出,这涉及到分页查询数据总览页的查询,通常是开发者自定义的复杂连表查询,不需要分页那么本文针对以上两种情况来实现第一版的通用导出功能。...上面我们虽然是写死了代码,但聪明的开发者一定懂得将数据库查询来的数据转换成对应的格式,所以这段就跳过了。...复杂数据导入复杂数据比如这种场景:excel文件中每行的数据是这样的:其中是否超管和是否管理员涉及关联表:用户表:tb_user角色表:tb_role用户角色关联表:tb_user_role_relation...为了支持这种复杂数据导入,系统内需要提供对应的保存方法:1.新建DTO类:第一种:public class UserDto {    private String username;    private

    23500

    go-admin在线开发平台学习-4

    紧接着上一期的内容,继续对go-admin的一些细节进行解析。 通用的增删改查方法 在go-admin/common/actions下封装了通用的增删改查方法。...,根据笔者的实践这俩个接口的作用应该是这样的 Index 1、绑定查询参数 2、分页实体 Control 1、from表单或url实例绑定 2、dto转换【转换为数据库实体】 golang中的接口实现总是很难受...Bind()方法实现的功能是,参数绑定到实体ObjectById中。GetId()实现的方法是返回绑定的参数。而这俩个方法就是上面type.go的接口实现。 那么为什么要这么做呢?有什么作用?...首先在路由定义层面对不同路由的增删改查方法传递viewModel的实体作为后续实体绑定的定义。...使用它,你可以提取一些通用逻辑,写一些更可用的库 执行顺序 1、获取通用数据权限检查 2、调用gorm.scopes方法 ,在执行crud操作时候附加权限检查where条件作为判断依据。

    1K50

    黑马瑞吉外卖之菜品的分页查询展示(难点)

    还是按照原来的分页查询的类似的操作,在vue点到这个页面的时候会自动执行一个分页查询。所以在vue中一定有一个挂载的自动执行的方法。...执行分页下面还有获取图片的方法请求,现在我们先不用管这个图片的加载的方法。我们句直接去进行分页功能的开发。 这里还是进行前后端交互,当获取到正确的响应的话,然后将具体的数据装载到前端的页面。...后端分页功能的开发 首先需要菜品的实体类。实体类的属性基本对应数据库字段。 我们按照数据库当中的字段就暂且这样写,其实后面咋页面展示的话,会有的数据没有展示出来。我们先这样去写。...dishDtoPage.setRecords(list);//将收集起来的list赋值给最终的dto的records //因为上面处理的数据没有分类的id,这样直接返回R.success...其实你看它前面有一个泛型的修饰,我们之前的泛型是Dish这个实体类,如果我们直接拷贝过去的话,是不符合我们扩展的实体类泛型类型的,所以我们最终单独对其属性进行处理,将最终收集起来的数据设置了进去,这样就会符合一个

    88110

    写了个工具,让 CRUD 开发效率提升100倍,开源咯!

    来看下代码,建表sql、增删改查sql、表对应的实体类、DB层的接口类、业务层的实体类、业务层的接口类、业务接口的实现类、业务层实体类和db层实体类的转换器,最后是controller层,这些代码全都帮我们生成好了...3通用性的思考 不知道大家觉得怎么样哈,如果只是我自己用,我觉着已经非常好了,但既然是开放出来给大家用,通用性肯定还是不够的。...$ return target; } /** * do转dto * @param source * return dto模型 *...return target; } /** * do list 转 dto * @param data * return list dto模型 *...java_type_adapter_assert_method 对于Java数据类型等于String的字段,使用isNoBlankStr方法,其他的类型都使用isNoEmptyObj方法 这是一个定制化很高的动态参数

    28510

    ABP入门系列(7)——分页实现

    展现层传入数据传输对象(DTO)调用一个应用服务方法,接着应用服务通过领域对象执行一些特定的业务逻辑并且返回DTO给展现层。这样展现层和领域层被完全分离开了。...在具有良好分层的应用程序中,展现层不会直接使用领域对象(仓库,实体)。 我们在展现层有分页请求时,一般需要指定两个参数,一个用来标志第几页、一个是每页行数(一般有配置文件配置)。...因为分页是一个很常用的功能,所以,展现层我们有分页请求时,最好有相应的DTO来封装这两个参数。 在ABP源码中并没有为我们封装这样公用的类,但是在ABPZero项目中,定义了相应的分页Dto。...:分页排序过滤Dto PagedAndFilteredInputDto:分页过滤Dto 是不是很实用,我们的分页一般是和过滤排序混合使用的。...五、使用X.PagedList进行前端分页 在Asp.Net Mvc中进行前端分页有一系列开源实现,在我的Demo中使用的是开源的X.PagedList分页。

    1.6K50

    写了个工具,CRUD 开发效率直接提升100倍!

    来看下代码,建表sql、增删改查sql、表对应的实体类、DB层的接口类、业务层的实体类、业务层的接口类、业务接口的实现类、业务层实体类和db层实体类的转换器,最后是controller层,这些代码全都帮我们生成好了...2通用性的思考 不知道大家觉得怎么样哈,如果只是我自己用,我觉着已经非常好了,但既然是开放出来给大家用,通用性肯定还是不够的。...$ return target; } /** * do转dto * @param source * return dto模型 *...return target; } /** * do list 转 dto * @param data * return list dto模型 *...$java_type_adapter_assert_method$ 对于Java数据类型等于String的字段,使用isNoBlankStr方法,其他的类型都使用isNoEmptyObj方法 这是一个定制化很高的动态参数

    1.2K41

    揭秘Bean Searcher与MyBatis Plus之争:你会选择哪个?

    从本例可以看出,Bean Searcher 的检索结果是 VO 对象,而非普通的单表实体类(DTO),这 省去了 DTO 向 VO 的转换过程,它可以直接返回给前端。...区别五(使用场景) 在事务性的接口用推荐使用 MyBatis Plus, 非事务的检索接口中推荐使用 Bean Searcher 例如 创建订单接口,在这个接口内部同样有很多查询,比如你需要查询 店铺的是否已经打烊...public List bs(UserQuery query) { // 将 UserQuery 对象转换为 Map 再传入进行检索 return beanSearcher.searchList...... // 省略 Getter Setter 方法 } 然后 Utils 工具类的 toMap 方法可以这样写(这个工具类是通用的): public static Map有跨表映射关系 的 VO(View Ojbect),它代表一种检索业务,在概念上它与传统 ORM 的实体类(Entity)或 域类(Domain)有着本质的区别!

    36230

    深入理解分页及 PageHelper 使用细节与注意事项

    本文将详细介绍 PageHelper 的工作机制、使用方法、常见问题及解决方案,帮助开发者正确使用它,避免踩坑。 一、PageHelper 的基本使用 1....使用方式 PageHelper 的核心方法是 PageHelper.startPage(),它的作用是为当前线程开启分页上下文,并在接下来的查询中拦截 SQL,添加分页参数。...获取满足条件的记录总数。 查询分页数据:在原始查询 SQL 后追加分页条件。 三、PageHelper 使用中的常见问题及解决方法 1....将分页查询代码移到条件分支内部,确保分页逻辑与查询一一对应。...数据转换后分页信息丢失 问题 如果分页查询返回的结果被转换为另一种类型(例如 DTO),再使用 PageInfo 封装,可能会导致分页总数信息丢失。

    46210

    黑马瑞吉外卖之套餐信息的分页查询

    黑马瑞吉外卖之套餐信息的分页查询 表和实体类环境以及前端页面分析 后端代码的逻辑开发 表和实体类环境以及前端页面分析 首先这里是套餐的功能开发,我们在设置数据库表以及之后的实体类的时候我们需要关注的就是套餐本身的分类以及套餐下关联的菜品...来看数据库当中的一个套餐的表以以及其设置的字段。这里我们需要注意到之前的分类管理中的id,我们套餐是分类的一种,所以这里需要有分类id。 于是我么设计出这样的表结构,然后就是实体类。...private Integer isDeleted; } 然后我们还是需要去扩展实体类属性,于是我们拓展出来dto。...然后数据展示的话,主要其实就是做一个分页的查询展示。 这样的分页查询我们还是按照之前的逻辑,当我们打开这个前端页面的时候,这里的方法这里其实还是进行了挂载的自动加载。...那就是这样的一个方法。 然后我们点进去去查看这个方法。下面这个就是分页查询的请求方法和路径。 其实在浏览器这里我们也可以去调试路径。

    36230

    OEA ORM中的分页支持

    根据分页技术应用的位置不同,大致可以把分页分为以下几种: 界面层分页     界面层的分页,类似于界面的虚拟化技术,是只显示需要的数据的一种技术。...实体层分页     在实体层进行分页操作的方案,很少会被使用。它是把查询出来的数据,在服务器端都转换为实体,然后再找到具体页的实体数据,其它的数据则直接丢弃。...可以看到,在数据访问层的 ORM 框架中,主要是在 IQuery 条件类型上添加了一个 Paging 方法。使用这个方法指定了 PagingInfo 后,即按给定的分页信息分页查询实体数据了。...OEA 中的数据层分页实现     OEA 中用到的分页有:界面层分页、DataReader 分页、数据库分页。 界面层分页 其实在 OEA 中就是 UI 虚拟化。...经过对比、挑选,我选用了一种可以在 SqlServer、Oracle 上的一种通用方案,即使用 RowNumber。

    1.3K80

    一个多功能(聚合)查询接口,实现模糊、分页、主键、排序以及多条件查询

    首先考虑一下目前项目理想状态: 实体映射数据库 数据库字段规范的采用蛇形命名,无一例外 实体类采用驼峰命名映射,无一例外 这种情况下,我只需要通过反射,将一个传过来的实体类的字段从驼峰转换为蛇形命名,...对于分页条件,我设置的是必传项,并且没去设置默认值(懒...)。 那将这个逻辑串联起来,就可以实现一个通用方法。 但是!!!...然后三个实体都有了,我们还需要将上面逻辑处理段落总结的逻辑串联起来,实现一个通用方法。...通用方法实现 我们开始已经封装了模糊、条件、排序的拼接方法,所以我们可以直接调用封装好的方法去实现拼接的逻辑处理。...,主要就是实现通用性和逻辑贯穿处理,这里没写过多注释,aggregate.hasXXXX方法是判断是否存在条件实体对象或者字段值,逻辑还需要请各位亲自捋一下了,毕竟也就几个if。

    1.1K90

    BCVP开发者说第一期:Destiny.Core.Flow

    Destiny.Core.Flow重写微软的identity用户角色和重写IdentityServer4的实体,以及IdentityServer的ClientAPisource等查询仓库实现,将IdentityServer4...Net Core技术 MSDI (个人扩展批量注入) Consul服务注册发现 基于MediatR实现事件总线 AutoMapper对象映射 在仓储层实现了自动转实体层不需要手动注入实现转化...层,实现注解式模块化挂载、事件总线、自动DI注册、通用查询模型、lambda表达式动态生成、仓储接口定义、权限接口定义、自定义扩展方法等。...Destiny.Core.Flow.CodeGenerator 代码生成器 已实现,可以生成实体、DTO、接口、控制器。...我们都是学生,也都是下一批初学者的老师,这才应该是一个社区正向推动的方法。

    67010

    有了 Prisma,就别用 TypeORM 了

    ({ data: { name: 'kuizuo', email: 'hi@kuizuo.cn', }, }) 根据条件来创建还是更新​ 在数据库中操作经常需要判断数据库中是否有某条记录...就可像下面这样,便可在 model 中使用paginate方法来实现分页,如下代码。...::: 两种分页的使用场景 按页查询通常 光标查询 则用于流式查看,例如无限下拉滚动 ::: 而在 TypeORM 你通常需要自己封装一个 paginate方法,就如下面代码所示(以下写法借用 nestjs-typeorm-paginate...合理来说,Prisma 并不是一个传统的 ORM,它的工作原理并不是将表映射到编程语言中的模型类,为处理关系数据库提供了一种面向对象的方式。而是在 Prisma Schema 中定义模型。...然而,Prisma 却不同,是一个全能通用的选择,可以在任何的 js/ts 框架中使用。 从开发体验的角度不接受任何选择 TypeORM 的反驳,有了更优优秀的选择,便不愿意也不可能在回去了。

    2.7K22

    mybatisplus+swagger【后端专题】

    代码的精简提供了一种方式 你是否发现每个JavaBean都会写getter,setter,equals,hashCode和toString的模板代码,特别的多于没技术 lombok消除Java的冗长代码...EqualsAndHashCode(callSuper=false),这时候生成的equals()方法只会比较子类的属性,不会考虑从父类继承的属性,无论父类属性访问权限是否开放,只要知道是否需要使用父类的属性即可...),可自由配置,完美解决主键问题 ​ 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作 支持自定义全局通用操作...好的功能 好用的:通用crud、自动生成工具、分页查询 有点耦合但也不错的功能:逻辑删除、乐观锁等 AR则不怎么建议使用 偏业务型项目、管理后端项目等推荐使用,和jpa类似 第八章 后端提效提效神器之接...开放API规范(OAS)是一种无需编写实际API代码就可以记录API的方法。 这是一种开放源代码格式,可以用来描述API。 在此过程中,我们可以使用JSON或YAML格式。 ​

    2.1K30

    【Maven插件】CRUD非业务代码一键生成插件

    若生成后,有报错,请查看必备的配置,看看依赖和mapper扫描是否添加。...版本更新说明 请使用最新版本,从1.0.0开始上传到中央仓库 1.0.0 删除query.open开关的配置,强制开启条件分页查询以及相关类生成 将一些配置的数据进行通用的一个抽取,方便后期进行扩展类...service层增加通过QueryWrapper查询的分页接口 service层增加单一数据的返回查询接口 实体类生成toString方法 service层增加修改接口 分页500的限制放开 service...支持配置是否生成分页查询方法 <!...,默认开启 自动给列名加上``关键字转义符 跳过已经存在的文件,fileOverride 支持单表/全库表生成配置,include 其他 有什么问题,或者有什么其他的功能需求,欢迎提出

    70910
    领券