篇二:BaseService、BaseDao整理

一世执手 提交于 2020-03-21 01:17:04

公共Service层、Dao层整理

  篇一介绍了Spring与Mybatis的整合,整合成功后的下一步动作就是整理公共操作Mybatis的方法。整合过程中关于jar包版本需要注意,特别是mybatis-spring.jar的版本,1.2之前的版本与之后的版本在SqlSessionDaoSupport.class有所改动,远吗会说明使用

  BaseDao:

package com.core.dao;

import java.util.List;
import com.core.dao.common.BaseResponse;
import com.core.dao.common.PageData;

/**
 * Dao层公共包
 * @author Liugp
 *
 */
public interface BaseDao<T> {

    /**
     * 查询单条数据
     * @param id
     * @return
     */
    T selectById(String id);
    
    /**
     * 查询多条数据,不分页
     * @param obj
     * @return
     */
    List<T> selectList(Object obj);
    
    /**
     * 自定义列表查询,不分页
     * @param statement
     * @param obj
     * @return
     */
    List<T> selectList(String statement,Object obj);
    
    /**
     * 查询多条数据,分页
     * @param page
     * @param obj
     * @return
     */
    BaseResponse selectListPage(PageData page,Object obj);
    
    /**
     * 自定义列表查询,分页
     * @param page
     * @param statement
     * @param obj
     * @return
     */
    BaseResponse selectListPage(PageData page,String statement,Object obj);
    
    /**
     * 新增数据
     * @param entity
     * @return :插入成功,返回新增的
     */
    int insert(T entity);
    
    /**
     * 批量插入:数据表的主键id是UUID生成的,自增长的会提示id不为空,报错
     * @param list
     * @return
     */
    int insert(List<T> list);
    
    /**
     * 修改数据
     * @param entity
     * @return
     */
    int update(T entity);
    
    /**
     * 批量修改数据
     * @param list
     * @return
     */
    int update(List<T> list);
    
    /**
     * 单条删除
     * @param id
     * @return
     */
    int delete(String id);
    
    /**
     * 批量删除
     * @param ids
     * @return
     */
    int delete(String[] ids);
}

   BaseDaoImpl:mybatis-spring 版本说明,1.2之前支持自动加载SqlSessionTemplate,1.2之后无法

package com.core.dao;

import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;
import com.core.dao.common.BaseResponse;
import com.core.dao.common.BasicExecuteEnum;
import com.core.dao.common.PageData;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

/**
 * 公共方法实现类
 * @author shb
 *
 */
public class BaseDaoImpl<T> extends SqlSessionDaoSupport implements BaseDao<T>
{

    @Override
    public T selectById(String id) {
        return getSqlSession().selectOne(getStatement(BasicExecuteEnum.SELECT_BYID.id), id);
    }

    @Override
    public List<T> selectList(Object obj) {
        return getSqlSession().selectList(getStatement(BasicExecuteEnum.SELECT_LIST.id), obj);
    }
    
    @Override
    public List<T> selectList(String statement, Object obj) {
        return getSqlSession().selectList(getStatement(statement), obj);
    }

    @Override
    public BaseResponse selectListPage(PageData page, Object obj) {
        BaseResponse response = new BaseResponse();
        PageHelper.startPage(page.getPage(), page.getNumber(), true);
        List<Object> list =  getSqlSession().selectList(getStatement(BasicExecuteEnum.SELECT_LIST.id), obj);
        response.setObj(list);
        response.setPageInfo(new PageInfo<Object>(list));
        return response;
    }

    @Override
    public BaseResponse selectListPage(PageData page, String statement,
            Object obj) {
        BaseResponse response = new BaseResponse();
        PageHelper.startPage(page.getPage(), page.getNumber(), true);
        List<Object> list =  getSqlSession().selectList(getStatement(statement), obj);
        response.setObj(list);
        response.setPageInfo(new PageInfo<Object>(list));
        return response;
    }
    
    @Override
    public int insert(T entity) {
        return getSqlSession().insert(getStatement(BasicExecuteEnum.INSERT.id), entity);
    }

    @Override
    public int insert(List<T> list) {
        return getSqlSession().insert(getStatement(BasicExecuteEnum.INSERT_BATCH.id), list);
    }

    @Override
    public int update(T entity) {
        return getSqlSession().update(getStatement(BasicExecuteEnum.UPDATE.id), entity);
    }

    @Override
    public int update(List<T> list) {
        int size = 0;
        for(T obj:list){
            int length = getSqlSession().update(getStatement(BasicExecuteEnum.UPDATE.id),obj);
            if(length != 0) size++;
        }
        return size;
    }

    @Override
    public int delete(String id) {
        return getSqlSession().delete(getStatement(BasicExecuteEnum.INSERT.id), id);
    }

    @Override
    public int delete(String[] ids) {
        int size = 0;
        for(String id:ids){
            int length = getSqlSession().delete(getStatement(BasicExecuteEnum.INSERT.id), id);
            if(length != 0 ) size++;
        }
        return size;
    }

    /**
     * 注入SqlSessionTemplate实例(要求Spring中进行SqlSessionTemplate的配置).<br/>
     * 可以调用getSqlSession()完成数据库操作.
     */
//    public SqlSessionTemplate sqlSessionTemplate;

//    @Autowired
//    protected SqlSessionFactory sqlSessionFactory;

//    public SqlSessionTemplate getSessionTemplate() {
//        return getSqlSession();
//    }

    @Autowired
    public void setSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
        super.setSqlSessionTemplate(sqlSessionTemplate);
    }

    public SqlSession getSqlSession() {
        return super.getSqlSession();
    }

//    public SqlSessionFactory getSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
//        return sqlSessionFactory;
//    }
//    
//    @Override
//    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
//        this.sqlSessionFactory = sqlSessionFactory;
//    }

    /**
     * 获取类的全路径,拼接 sqlId的Mapper的访问路径
     * 公共方法无法获取指定的类全路径,即无法使用namespace的完全限定名
     * @param sqlId
     * @return
     */
    public String getStatement(String sqlId) {

        String name = this.getClass().getName();

        StringBuffer sb = new StringBuffer().append(name).append(".").append(sqlId);

        return sb.toString();
    }
}

   

package com.core.dao;

import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;
import com.core.dao.common.BaseResponse;
import com.core.dao.common.BasicExecuteEnum;
import com.core.dao.common.PageData;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

/**
 * 公共方法实现类
 * @author shb
 *
 */
public class BaseDaoImpl<T> extends SqlSessionDaoSupport implements BaseDao<T>
{

    @Override
    public T selectById(String id) {
        return getSqlSession().selectOne(getStatement(BasicExecuteEnum.SELECT_BYID.id), id);
    }

    @Override
    public List<T> selectList(Object obj) {
        return getSqlSession().selectList(getStatement(BasicExecuteEnum.SELECT_LIST.id), obj);
    }
    
    @Override
    public List<T> selectList(String statement, Object obj) {
        return getSqlSession().selectList(getStatement(statement), obj);
    }

    @Override
    public BaseResponse selectListPage(PageData page, Object obj) {
        BaseResponse response = new BaseResponse();
        PageHelper.startPage(page.getPage(), page.getNumber(), true);
        List<Object> list =  getSqlSession().selectList(getStatement(BasicExecuteEnum.SELECT_LIST.id), obj);
        response.setObj(list);
        response.setPageInfo(new PageInfo<Object>(list));
        return response;
    }

    @Override
    public BaseResponse selectListPage(PageData page, String statement,
            Object obj) {
        BaseResponse response = new BaseResponse();
        PageHelper.startPage(page.getPage(), page.getNumber(), true);
        List<Object> list =  getSqlSession().selectList(getStatement(statement), obj);
        response.setObj(list);
        response.setPageInfo(new PageInfo<Object>(list));
        return response;
    }
    
    @Override
    public int insert(T entity) {
        return getSqlSession().insert(getStatement(BasicExecuteEnum.INSERT.id), entity);
    }

    @Override
    public int insert(List<T> list) {
        return getSqlSession().insert(getStatement(BasicExecuteEnum.INSERT_BATCH.id), list);
    }

    @Override
    public int update(T entity) {
        return getSqlSession().update(getStatement(BasicExecuteEnum.UPDATE.id), entity);
    }

    @Override
    public int update(List<T> list) {
        int size = 0;
        for(T obj:list){
            int length = getSqlSession().update(getStatement(BasicExecuteEnum.UPDATE.id),obj);
            if(length != 0) size++;
        }
        return size;
    }

    @Override
    public int delete(String id) {
        return getSqlSession().delete(getStatement(BasicExecuteEnum.INSERT.id), id);
    }

    @Override
    public int delete(String[] ids) {
        int size = 0;
        for(String id:ids){
            int length = getSqlSession().delete(getStatement(BasicExecuteEnum.INSERT.id), id);
            if(length != 0 ) size++;
        }
        return size;
    }

    /**
     * 注入SqlSessionTemplate实例(要求Spring中进行SqlSessionTemplate的配置).<br/>
     * 可以调用getSqlSession()完成数据库操作.
     */
//    public SqlSessionTemplate sqlSessionTemplate;

//    @Autowired
//    protected SqlSessionFactory sqlSessionFactory;

//    public SqlSessionTemplate getSessionTemplate() {
//        return getSqlSession();
//    }

    @Autowired
    public void setSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
        super.setSqlSessionTemplate(sqlSessionTemplate);
    }

    public SqlSession getSqlSession() {
        return super.getSqlSession();
    }

//    public SqlSessionFactory getSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
//        return sqlSessionFactory;
//    }
//    
//    @Override
//    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
//        this.sqlSessionFactory = sqlSessionFactory;
//    }

    /**
     * 获取类的全路径,拼接 sqlId的Mapper的访问路径
     * 公共方法无法获取指定的类全路径,即无法使用namespace的完全限定名
     * @param sqlId
     * @return
     */
    public String getStatement(String sqlId) {

        String name = this.getClass().getName();

        StringBuffer sb = new StringBuffer().append(name).append(".").append(sqlId);

        return sb.toString();
    }

}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!