ssm框架使用通用Mapper和BaseService
阿新 • • 發佈:2019-02-04
由於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三大框架配置是可以直接使用的,非常的全,只需要更改部分程式碼就可以和你的專案整合了。