`

DAO层:jade

 
阅读更多
DAO层:jade

一、Jade简介:
jade:java access data layer
1.用jade的好处在于,尽可能减少重复的从db把数据对bean进行装配的过程,统一入口,隔离业务逻辑,方便review。
2.jade是在spring完成的数据层的良好实践总结,无缝接入rose中,可以算得上是rose亲密无间的好模块。


二、基础配置
1.要开始使用jade,一定要先引用jade的基础包:
pom.xml:
        <dependency>
            <groupId>com.54chen</groupId>
            <artifactId>paoding-rose-jade</artifactId>
            <version>1.1</version>
        </dependency>

除了需要jade的包外,还需要引入数据源连接池的jar,这里使用了dbcp,当然了mysql-connector也是必不可少的,还是在pom.xml中添加:
      
 <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
                        <version>1.2.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.10</version>
        </dependency>

3.在pom中引入了依赖之后,需要定义一个数据源,这里先不考虑多个数据源的情况:
在war项目的applicationContext.xml中增加数据源定义:
     <!-- 数据源配置 dbcp -->
    <bean id="jade.dataSource.com.chen.dao" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url"
            value="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=utf-8"></property>
        <property name="username" value="test"></property>
        <property name="password" value="test"></property>
        <!-- 运行判断连接超时任务的时间间隔,单位为毫秒,默认为-1,即不执行任务。 -->
        <property name="timeBetweenEvictionRunsMillis" value="3600000"></property>
        <!-- 连接的超时时间,默认为半小时。 -->
        <property name="minEvictableIdleTimeMillis" value="3600000"></property>
    </bean> 

这里假设了mysql已经安装在本地了,用户名为test,密码为test。
jade约定了bean的id为jade.dataSource.classPackageName。
jade约定了这个bean的有效范围为classPackageName所有的DAO。
jade约定了除非有专门的定义,所有的子目录也受bean上的classpackageName所影响。



三、jade支持一些常规的表达式:

语法一:常见的变量赋值

冒号(:)表示这是一个变量,比如上面的例子里的 :t.id,它会被一个值替换。
语法二:字符串连接

连续的井号(##) 表示后面的变量作字符串连接
如下例中的partition变量,还请不要误解,分表不是这样做的,下一章会介绍标准的分表设置。
   @SQL("SELECT user_id, device_token FROM test_##(:partition) LIMIT :limit")
    public List<Test> getTests(@SQLParam("partition") int partition, @SQLParam("limit") int limit);


语法三:条件选择
井号if(#if{})用于表示当条件满足时sql拼接。
   @SQL("SELECT user_id, device_token FROM test_##(:partition) #if(:user>0){ where user_id=:user } LIMIT :limit")
    public List<Test> getTestsIf(@SQLParam("partition") int partition, @SQLParam("limit") int limit, @SQLParam("user") int user); 


其他语法:还有for循环。
典型地,一般的select in查询,可以直接传入list,例如下例中的ids变量:
    @SQL("SELECT user_id, device_token FROM test_##(:partition) where user_id in(:ids)")
    public List<Test> getTestsByIds(@SQLParam("partition") int partition, @SQLParam("ids") List<Integer> ids);


























分享到:
评论
1 楼 liubinli2005 2016-08-23  
这个可以脱底spring。单独使用吗?

相关推荐

    C#特性标签实现通用Dao层

    在C#编程中,"通用Dao层"是一个常见的设计模式,用于封装数据库操作,使得业务逻辑层能够专注于处理业务规则,而无需关心底层数据访问的细节。本篇将重点探讨如何利用C#的特性(Attribute)标签来实现这一目标,同时...

    Service层和DAO层解析

    Service层和DAO层是软件开发中常见的两种设计模式,主要用于分离业务逻辑和数据访问操作。在Java Web开发中,它们通常被应用于三层架构或MVC(Model-View-Controller)模型中。 DAO(Data Access Object)层是负责...

    经典泛型dao层代码,非常好用简易

    ### 泛型DAO层在SSH框架中的应用与详解 #### 引言 在现代软件开发中,特别是基于Java的企业级应用开发中,DAO(Data Access Object)层的设计扮演着至关重要的角色。它作为业务逻辑层与数据持久层之间的桥梁,承担...

    action层,dao层 ,service层,entity层1

    标题和描述中提到的"action层,dao层,service层,entity层"是这种分层架构的典型组成部分,下面将详细解释每一层的功能和它们之间的交互。 1. **Action层(控制层)**: 这一层主要负责接收用户的请求,进行业务...

    SpringBoot 多模块Dao层单元测试

    对于多模块的Spring Boot项目,每个模块可能包含不同的组件,如Service层、Controller层和Dao层。Dao层主要负责与数据库交互,因此它的单元测试通常涉及对数据库操作的模拟,而无需实际连接到数据库。 1. **配置多...

    Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合

    本文主要探讨Spring如何贯穿整个中间层,将Web层、Service层、DAO层以及PO(Plain Old Java Object)无缝整合起来。 #### 二、Spring框架的关键作用 1. **无缝整合**:Spring框架的一个显著特点是能够将不同的技术...

    简单DAO层示例

    在IT行业中,DAO(Data Access Object)层是软件设计模式中的一个重要组成部分,它主要用于数据库操作,隔离了业务逻辑层与数据存储层之间的交互。在这个"简单DAO层示例"中,我们将探讨DAO的设计原则、实现方式以及...

    DAO层_Service层_Controller层、View层介绍

    DAO层_Service层_Controller层、View层的一些了解知识,帮助填充对这部分比较空白的开发者们。

    mybatisDAO层自动生成插件

    MyBatis DAO层自动生成插件是一个非常实用的工具,它极大地简化了开发过程中DAO(Data Access Object)层的编写工作。MyBatis是Java领域的一款流行持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,使得...

    spring boot服务器dao层实例化.rar_dao实例化_idea 实例ID_spring boot_spring b

    在Spring Boot应用中,DAO(Data Access Object)层是数据访问层,负责与数据库进行交互。DAO层的设计和实现对于任何应用程序来说都是至关重要的,因为它提供了数据存储和检索的抽象,使得业务逻辑与数据操作相分离...

    泛型通用DAO,可以很简化DAO层的代码

    在Java编程领域,DAO(Data Access Object)模式是一种常见的设计模式,用于封装对数据库的操作,以解耦业务逻辑层和数据存储层。泛型通用DAO是这种模式的一种优化,它利用了Java 5.0引入的泛型和反射机制,大大简化...

    DAO与三层结构

    DAO(Data Access Object)模式与三层结构是软件开发中常见的设计模式和架构方式,主要用于处理数据访问和业务逻辑。在企业级应用开发中,这两种技术的结合能够提高系统的可维护性、可扩展性和复用性。 DAO模式的...

    项目model、Dao层、业务层建模工具类

    本资源提供了一种用于项目model、Dao层、业务层建模的工具类,旨在简化开发流程,提高代码复用性。下面我们将详细探讨这些知识点。 首先,"model"层通常指的是领域模型(Domain Model),它是业务逻辑的核心,包含...

    图书管理系统DAO层代码

    在IT行业中,数据库访问对象(DAO)层是软件设计中的一个重要组成部分,特别是在Java开发中。DAO层主要用于处理数据存储和检索,它隔离了业务逻辑层与数据库交互的细节,使得代码更加灵活和可维护。本项目是关于一个...

    虚拟数据层:Struts2、Hibernate、Spring整合的泛型DAO 代码

    泛型dao 即:不写重复的dao 。这个技术 能让 dao层 和 service层 不写一行代码。外国都用这个泛型DAO了 中国还是一个类一个dao的写,我生气就写了这个文章了。 在本文中,我将为您展示如何避免再三地重复 DAO 代码

    dao层基类dao层基类dao层基类

    dao层基类dao层基类dao层基类dao层基类dao层基类

    dao层自动生成

    在IT行业中,DAO(Data Access Object)层是软件设计模式中的一个重要组成部分,它主要用于封装对数据库的操作,使得业务逻辑层与数据访问层解耦。"DAO层自动生成"这一技术旨在提高开发效率,减少手动编写重复代码的...

    web应用dao层的开发经验小结

    在Web应用程序的开发中,DAO(Data Access Object)层是一个至关重要的部分,它负责与数据库进行交互,隔离业务逻辑和数据存储的细节。本篇文章将深入探讨DAO层的设计与实现经验,结合源码分析和实用工具,以提高...

    javadao层的编写

    Java的dao层和service层,很不错的哦!

    dao自动生成工具 基于ibator 只需要设置少量参数就能 创建dao层所有类

    ibator-huoniao通过它你可以通过配置少量参数,通过一键生成dao层的全部文件,能够应付对dao层的所有操作 产物包括: 1. pojo文件 2. dao接口类 3. dao接口实现类文件 4. ibatis sql map文件 5. 数据库查询时...

Global site tag (gtag.js) - Google Analytics