资讯专栏INFORMATION COLUMN

数据库DAO方法命名最佳实践

Nino / 263人阅读

摘要:本质上就是通过比较好的命名规范来解决这个问题。按照这样的方法代码命名规范,这样再也不怕代码写多了,不知道哪些方法的功能是干什么的了。

一般我们在写数据库查询的时候会有很多的查询数据的方法
比如:

查询数据操作(查询分类列表、城市信息、新闻列表)

修改操作(修改昵称、修改订单的状态)

删除操作(删除)

添加操作(下一个订单、添加一个商品)

统计操作(统计有多少个订单)

其实一看就是我们通常的使用最多的crud操作,但是随着业务的迭代,我们的数据库的操作会越来越多,就会产生一个问题:看一个DAO方法的直接反应是不知道这个方法具体什么数据库操作。这样新人加入后,对于项目的理解难度就会加大。本质上就是通过比较好的命名规范来解决这个问题。

好了废话不多说,那通过怎么样的命令规则才能解决这个问题呢?根据笔者的工作经验大致罗列出了一些通用的命名方案,希望可以对大家做一个参考。

查询的数据一般我们会分为两种情况,一种是查询出所有的数据,比如是元数据(新闻分类信息、城市信息)对于这类的命名我一般会用listXXX()这样的命名方式,这样一眼就可以看出这个DAO方法是查询这个表的所有数据;另一种是查询分页数据,比如新闻列表这里的信息我一般会用findXXX(Criteria c),findById(Long id)这样的命名方式。

修改数据我们一般以updateBy(Record record ,Criteria c),updateById(Long id)开头命名

删除以deleteById(Long id),deleteBy(Criteria c)开头命名

添加一般以insert(Record record)开头命名

统计一般用countBy(Criteria c)开头命名

通过上面的命名规则,再结合业务的调用的参数,基本上很清楚了解到每个方法具体是操作数据的,用过Criteria也可以把条件的逻辑封装到sql语句的处理上,形成一个通用的解决方法。解释一下Record是要操作的数据对象,Criteria是条件对象

下面附一套我常用的mybatis的Mapper的命名方案

public interface UserRepository {
    long countBy(UserCombo combo);
    int deleteBy(UserCombo combo);
    int deleteById(Long id);
    int insert(User record);
    int insertSelective(User record);
    List listAll();
    List findBy(UserCombo combo);
    User findById(Long id);
    int updateSelectiveBy(@Param("record") User record, @Param("combo") UserCombo combo);
    int updateBy(@Param("record") User record, @Param("combo") UserCombo combo);
    int updateSelectiveBy(User record);
    int updateBy(User record);
}

好啦,总的来说是一套基于约定的套路来减少团队的沟通的成本。按照这样的DAO方法代码命名规范,这样再也不怕代码写多了,不知道哪些方法的功能是干什么的了。见名知意方便开发,提升沟通效率。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/48833.html

相关文章

  • 据库DAO方法命名最佳实践

    摘要:本质上就是通过比较好的命名规范来解决这个问题。按照这样的方法代码命名规范,这样再也不怕代码写多了,不知道哪些方法的功能是干什么的了。 一般我们在写数据库查询的时候会有很多的查询数据的方法比如: 查询数据操作(查询分类列表、城市信息、新闻列表) 修改操作(修改昵称、修改订单的状态) 删除操作(删除) 添加操作(下一个订单、添加一个商品) 统计操作(统计有多少个订单) 其实一看就是我们...

    Meils 评论0 收藏0
  • 据库DAO方法命名最佳实践

    摘要:本质上就是通过比较好的命名规范来解决这个问题。按照这样的方法代码命名规范,这样再也不怕代码写多了,不知道哪些方法的功能是干什么的了。 一般我们在写数据库查询的时候会有很多的查询数据的方法比如: 查询数据操作(查询分类列表、城市信息、新闻列表) 修改操作(修改昵称、修改订单的状态) 删除操作(删除) 添加操作(下一个订单、添加一个商品) 统计操作(统计有多少个订单) 其实一看就是我们...

    Tikitoo 评论0 收藏0
  • 猫头鹰的深夜翻译:使用SpringBoot和AspectJ实现AOP

    摘要:我们会写切面来拦截对这些业务类和类的调用。切面定义何时拦截一个方法以及做什么和在一起成为切面连接点当代码开始执行,并且切点的条件满足时,通知被调用。 前言 这篇文章会帮助你使用Spring Boot Starter AOP实现AOP。我们会使用AspectJ实现四个不同的通知(advice),并且新建一个自定义的注解来追踪方法的执行时间。 你将会了解 什么是交叉分割关注点(cross...

    meislzhua 评论0 收藏0
  • Java面试前需要了解的东西

    摘要:我在面试前针对基础也花了不少的时间,期间也将自己写过的博文粗略地刷了一遍,同时也在网上找了不少比较好的资料部分是没看完的。看面试题也是校验自己是否真正理解了这个知识点,也很有可能会有新的收获。 一、前言 只有光头才能变强 回顾前面: 广州三本找Java实习经历 上一篇写了自己面试的经历和一些在面试的时候遇到的题目(笔试题和面试题)。 我在面试前针对Java基础也花了不少的时间,期间也将...

    renweihub 评论0 收藏0
  • Java异常处理 10 个最佳实践

    摘要:为可恢复的错误使用检查型异常,为编程错误使用非检查型错误。检查型异常保证你对错误条件提供异常处理代码,这是一种从语言到强制你编写健壮的代码的一种方式,但同时会引入大量杂乱的代码并导致其不可读。在编程中选择检查型异常还是运行时异常。 异常处理是Java 开发中的一个重要部分。它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等。Java提供了...

    Forelax 评论0 收藏0

发表评论

0条评论

Nino

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<