数据库访问层Dao业务逻辑小记录(一)

在我的feelling中,用ssh搭建Java Web开发框架时,用M-V-C模式是最好不过了。此时,后台业务逻辑层即model层,会有很多实现方式。这么久以来,我通过一些资料发现了一种我觉得很好的方式,所以,想记录下来。毕竟,好记忆不如烂笔头嘛。

1.新建业务层包,即service包,前缀可自定义。

2.再在service包下新建一个基层或者叫基本业务的包,可定义为base包。

3.在base包下,新建总的业务接口,定义增删改查(Curd)的业务。

View Code
/**
 * 全局接口
 * @author Scherrer
 *
 */
public interface DAO {
}

4.定义具体Curd的方法,参数可自定义。

View Code
    /**
     * 保存实体对象
     * @param entity 实体id
     */
    public void save(Object entity);
    
    /**
     * 更新实体对象
     * @param entity 实体id
     */
    public void update(Object entity);
    
    /***
     * 动态参数,删除实体
     * @param entityclazz 泛型类
     * @param entityid 实体id
     */
    public <T> void delete(Class<T> entityclazz ,Object ...entityids);
    
    
    /**
     * 泛型技术,查询实体
     * @param entityclazz 泛型类
     * @param entityid 实体id
     * @return 
     */
    public <T> T search(Class<T> entityclazz,Object entityid);
    

5.其中,在查询数据库时,通常会有分页的功能。此时,新建一个查询结果的泛型类,可放在项目的bean目录下。

View Code
package com.bean;

import java.util.List;

public class QueryResult<E>{

    private List<E> results;
    private Long count;
    public List<E> getResults() {
        return results;
    }
    public void setResults(List<E> results) {
        this.results = results;
    }
    public Long getCount() {
        return count;
    }
    public void setCount(Long count) {
        this.count = count;
    }
    
}

6.继续定义分页查询的接口,参数类型如:限制条件(where语句),是否分页,查询最大记录数,排序(order by),分组(having)等等。

View Code
/**
     * 
     * @param entityclass 泛型
     * @param startIndex 每页开始的索引
     * @param maxCount 最大记录
     * @param whereJpql 查询条件
     * @param param 设置参数
     * @param orderby 排序条件
     * @return
     */
    public <T> QueryResult<T> getScrollData(Class<T> entityclass,int startIndex,
            int maxCount,String whereJpql, Object[] params,LinkedHashMap<String, String> orderby);
    
    public <T> QueryResult<T> getScrollData(Class<T> entityclass,int startIndex,
            int maxCount);
    
    public <T> QueryResult<T> getScrollData(Class<T> entityclass,int startIndex,
            int maxCount,String whereJpql, Object[] params);
    
    public <T> QueryResult<T> getScrollData(Class<T> entityclass,int startIndex,
            int maxCount,LinkedHashMap<String, String> orderby);
    
    public <T> QueryResult<T> getScrollData(Class<T> entityclass);

备注:在实现具体方法时,要采用ORM(对象关系映射)的方式。我常用的是JPA+Hibernate.

 

 

 

 

 

转载于:https://www.cnblogs.com/scherrer/archive/2013/03/03/2941283.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值