1. 程式人生 > >ssm框架使用通用Mapper和BaseService

ssm框架使用通用Mapper和BaseService

由於mybatis的通用mapper配置我們已經在上一篇文章ssm三大框架整合mybatis-config.xml檔案中配置好了,因此這裡就不在闡述,上一篇文章的地址:

在我們寫介面的時候可以直接繼承Mappe<T>介面,常用的增刪該查方法就完全不用寫了,只寫一些特殊方法就可以了,如下:

package com.taobao.manage.mapper;
import com.github.abel533.mapper.Mapper;
import com.taobao.manage.pojo.ItemCat;
public interface ItemCatMapper extends Mapper<ItemCat> {

}

這個時候我們就可以在service上用@Autowired注入我們的dao層了。

package com.taobao.manage.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.taobao.manage.mapper.ItemDescMapper;
import com.taobao.manage.pojo.ItemCat;
import com.taobao.manage.pojo.ItemDesc;

@Service
public class ItemCatService extends BaseService<ItemCat>{

    @Autowired
    private ItemCatMapper itemCatMapper;
    /**
     * 根據商品id查詢商品資訊
     * @param itemId
     * @return
     */
    public ItemDesc queryItemCatById(Long itemId) {   
        
        return this.itemCatMapper.selectByPrimaryKey(itemId);
    }
}

下面還有一個非常好得baseService工具類,當我們的service類繼承了這個baseService類後,我們就可以直接在controller層注入這個service了,例如:

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.taobao.manage.pojo.ItemCat;
import com.taobao.manage.service.ItemCatService;

@RequestMapping("item/cat")
@Controller
public class ItemCatController {
    @Autowired
    private ItemCatService itemCatService;

    // http://localhost:8081/rest/item/cat
    @RequestMapping(method = RequestMethod.GET)
    @ResponseBody
    public ResponseEntity<List<ItemCat>> queryItemListAll(
            @RequestParam(value = "id", defaultValue = "0") Long parentId) {
        try {
            ItemCat itemCat = new ItemCat();
            itemCat.setParentId(parentId);
            List<ItemCat> list = this.itemCatService.queryListByWhere(itemCat);
            //200
            return ResponseEntity.ok(list);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //500
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }
}

以下是我們的baseService工具類,為了能實現事務控制,請把baseService類放在我們的service層下:

package com.taobao.manage.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.github.abel533.entity.Example;
import com.github.abel533.mapper.Mapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

public abstract class BaseService<T> {
    
    @Autowired
    private Mapper<T> mapper;
       
    //根據id查詢實體
    public T queryById(Long id){
        return this.mapper.selectByPrimaryKey(id);
    }
    
    //查詢所有
    public List<T> queryAll(){
        return this.mapper.select(null);
    }
    
    //條件查詢
    public List<T> queryListByWhere(T param){
        return this.mapper.select(param);
    }
    
    //查詢記錄數
    public Integer queryCount(T param){
        return this.mapper.selectCount(param);
    }
    
    //分頁
    public PageInfo<T> queryPageListByWhere(T param,Integer page,Integer rows){
        PageHelper.startPage(page, rows);
        List<T> list = this.queryListByWhere(param);
        return new PageInfo<T>(list);

    }
    
    //查詢一條記錄
    public T queryOne(T param){
        return this.mapper.selectOne(param);
    }
    
    //插入
    public Integer save(T param){
        return this.mapper.insert(param);
    }
    
    //新增非空欄位
    public Integer saveSelect(T param){
        return this.mapper.insertSelective(param);
    }
    
    //根據主鍵更新
    public Integer update(T param){
        return this.mapper.updateByPrimaryKey(param);
    }
    
    //根據主鍵更新非空欄位
    public Integer updateSelective(T param){
        return this.mapper.updateByPrimaryKeySelective(param);
    }
       
    //根據主鍵刪除
    public Integer deleteById(Long id){
        return this.mapper.deleteByPrimaryKey(id);
    }     
    
    //批量刪除
    public Integer deleteByIds(Class<T> clazz,List<Object> values){
        Example example = new Example(clazz);
        example.createCriteria().andIn("id", values);
        return this.mapper.deleteByExample(example);
    }  
    
}

今天就寫到這裡,以上的ssm三大框架配置是可以直接使用的,非常的全,只需要更改部分程式碼就可以和你的專案整合了。