`
yesjavame
  • 浏览: 687757 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

用自动生成代码实现数据的持久化

阅读更多

又到春节了,有挺长时间没有写博客了。

节前的最后两天上班,没啥事,玩玩我上回弄的那个Info-Persister的数据持久化代码生成机制吧。

标题很大,其实很简单的一件事情。

一直认为Hibernate和JDO之类的东西过于复杂且效率不高,虽然省却了写SQL的麻烦但是需要编写一个并不简单的配置文件,所以说这些东西也并不能说极大地方便了开发者。

而自己写DAL层代码最痛苦的事情莫过于重复,大量重复的代码,GET/SET让人抓狂。

在.NET的时候,我弄了一个自动生成DAL层的小工具,原理很简单:

1.约定表的名称和字段名称,如表名前加t_XXX,字段名前加f_XXX,工具根据这个生成VO(即Info)。

2.将数据库操作放入DB中,用存储过程代替程序代码中的SQL语句,并约定SP的名称,如p_XXX,工具根据这个生成PO(即Persister)。

我用的是约定而不是配置,因为我一直认为“约定强于配置”。

因此,这个工具相当简单了,读数据库,根据约定,生成VO和PO的代码(注意是源代码!),然后可以在自己的项目中加入生成的代码,一起编译就OK了。

我个人非常推崇这种作法,一是效率,所有的SQL都放在SP中。二是省事,不用再GET/SET敲大堆重复代码。

唯一的就是你需要自己写存储过程,不单是SQL了,还要写SP。

具体实现上就不多说,两个问题解决就一切OK了!

一是代码生成
这个容易,在.NET中有System.CodeDom可以方便地使用,java中没有了,就干脆直接拼字串得了。
二是获取数据表与存储过程的结构
下面主要来说一下这个问题,我折腾了三种常用库:SQL Server、MySQL和Oracle。
首先,根据表与字段的信息,生成VO的代码,我们需要知道有哪些表?每个表有哪些字段?每个字段又都是什么类型?
可以这样:
然后,根据SP的信息,生成PO代码,我们需要知道有哪些SP?每个SP的名称?参数?返回值?
这儿我将SP进行了分类,比如t_user表有p_user_list,p_user_delete,p_user_create...等多个SP。
可以这样:
不过,Oracle比较麻烦的在于它的SP不能返回数据库,只能用OUT参数来处理了,但是它又有一个方便的PACKAGE,就不用在SP的名称上下功夫了,直接p_user.listAll就好了。
差不多就这样了,剩下的事情就只是一个工作量的问题了,花点时间弄一下就可以了。
最后,用一句话结束这个日记,放假了!
分享到:
评论

相关推荐

    postgre自动生成代码

    而"Postgre自动生成代码"指的是利用特定的工具或框架,自动化生成与PostgreSQL数据库相关的Java代码,如MyBatis的XML配置、DAO层、Service层以及DTO对象,以减少手动编写这些重复性工作的时间和出错概率。...

    Hibernate 数据持久化

    在Hibernate中,数据持久化是通过对象和数据库记录之间的映射实现的。 2. **Hibernate 配置** - **hibernate.cfg.xml**: 这是Hibernate的配置文件,包含了数据库连接信息、JDBC驱动、方言、缓存策略等设置。 - **...

    Mybatis 自动生成代码

    它能够根据数据库中的表自动生成对应的Java实体类、Mapper接口及XML配置文件,极大地提高了开发效率。在理解MBG的工作原理和使用方法之前,我们先来了解一下MyBatis框架。MyBatis是一个优秀的持久层框架,它支持定制...

    java自动生成代码工具

    Java自动生成代码工具通常会连接到数据库,读取表结构,然后基于这些信息生成相应的Java实体类、DAO接口、Service接口及其实现类等。 对于这个特定的"java自动生成代码工具",其核心功能可以概括为以下几个方面: ...

    mybatis自动生成代码

    "mybatis自动生成代码"这一主题通常指的是MyBatis的代码生成器,它可以帮助开发者自动化地创建数据访问对象(DAO)、实体类、Mapper接口和XML配置文件,从而提高开发效率,减少手动编码的工作量。 MyBatis 的代码...

    mybaits自动生成代码

    MyBatis的“自动生成代码”功能是其一大亮点,极大地提高了开发效率,尤其在处理大量表和字段时,能避免繁琐的手动编码工作。 首先,让我们详细了解MyBatis代码生成器(CodeGenerator)的基本概念。CodeGenerator是...

    mybatis 自动生成代码的工具

    一旦配置完成,运行 MBG 工具即可根据配置自动生成代码。 在实际使用中,MBG 的配置文件通常包含以下几部分: 1. **数据库连接信息**:包括 JDBC 驱动类、URL、用户名和密码,用于建立与数据库的连接。 2. **生成...

    eclipse mybatis自动生成代码工具

    Eclipse Mybatis自动生成代码工具是一款非常实用的开发辅助软件,尤其对于那些使用Mybatis作为持久层框架的Java开发者来说,它可以显著提升开发效率。Mybatis Generator(简称Generator)是这个工具的核心,它允许...

    Spring Cloud+mybatise + mysql 自动生成代码工具

    "Spring Cloud+mybatise + mysql 自动化代码生成工具"是这样一种解决方案,它能够帮助开发者按照预设规则自动生成常见的Controller、Service以及mapping配置文件等基础类,从而显著提升开发效率。 首先,我们来详细...

    mysql+mybatis自动生成代码工具

    MySQL+MyBatis自动生成代码...总的来说,MySQL+MyBatis自动生成代码工具是Java Web开发中一种高效的实践,结合Spring和Maven,为开发者提供了强大的自动化能力,让开发团队能够更加专注于业务创新和用户体验的提升。

    自动生成代码工具

    自动生成代码工具是一种提高开发效率、减少重复劳动的利器,特别是在大型项目中,代码生成工具能够帮助开发者快速构建基础框架,使他们可以专注于业务逻辑的实现。本压缩包提供的工具专注于MyBatis框架,它包括可...

    myBatis自动生成代码案例

    MBG是一个能够根据数据库表结构自动生成Java源代码和XML配置文件的工具。它可以生成Model对象、Mapper接口和XML配置文件,以及Service和DAO实现类等,这些代码通常用于处理数据库的CRUD(Create、Read、Update、...

    自动生成持久层代码工具

    "自动生成持久层代码工具"正是这样一个解决方案,旨在帮助开发者快速地生成实体类、DAO层以及对应的XML配置文件,从而避免繁琐的手动编写过程。这个工具基于Java语言,利用其强大的面向对象特性和丰富的库资源,可以...

    Spring Security 3多用户登录实现之九 基于持久化存储的自动登录

    在“Spring Security 3多用户登录实现之九 基于持久化存储的自动登录”这一主题中,我们将探讨如何利用Spring Security来实现多用户登录系统,并通过持久化存储来支持用户的自动登录功能。在这个过程中,我们会涉及...

    持久层代码自动生成工具

    1. **数据库元数据获取**:DBGen2首先需要连接到数据库,读取表的元数据,如表名、字段名、数据类型等,这是自动生成代码的基础。 2. **模板引擎**:为了生成不同类型的代码,工具通常会使用模板引擎,如FreeMarker...

    mybatis自动生成代码工具

    总的来说,MyBatis自动生成代码工具是MyBatis框架中的一大利器,它简化了数据库操作的编码工作,提高了开发效率,让开发者更专注于业务逻辑的实现。对于大型项目或者频繁需要与数据库交互的系统,这款工具的价值更是...

    EasyMock是一个可视化并且能快速生成模拟数据的持久化服务

    它允许开发者定义数据模型,然后自动生成符合这些模型的随机数据。这样不仅可以节省手动创建测试数据的时间,还可以避免因手动数据输入错误导致的测试问题。同时,EasyMock 支持预定义数据状态,使得测试场景更为可...

    mybatis 自动生成代码工具

    它能够帮助开发者自动生成PO(Plain Old Java Object,简单旧式Java对象)、DAO(Data Access Object,数据访问对象)以及对应的XML映射文件,极大地提升了开发效率,减少了手动编写重复性代码的工作量。 在MyBatis...

    DB自动生成代码-mybatis代码生成器

    "DB自动生成代码--mybatis代码生成器"就是这样一个工具,它可以极大简化开发工作,减少手动编写重复代码的时间。 MyBatis的代码生成器(generator)是MyBatis框架的一部分,它的主要功能是根据数据库表的信息自动...

Global site tag (gtag.js) - Google Analytics