由于mybatis的通用mapper配置我们已经在上一篇文章ssm三大框架整合mybatis-config.xml文件中配置好了,因此这里就不在阐述,上一篇文章的地址:
http://www.tpyyes.com/a/javaweb/2016/1103/23.html
在我们写接口的时候可以直接继承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三大框架配置是可以直接使用的,非常的全,只需要更改部分代码就可以和你的项目整合了,下一期将写如何与权限框架shiro整合。