zoukankan      html  css  js  c++  java
  • baseService

    baseService层代码

    public interface BaseService<T> {
        /**
         * 跟据id查询数据
         * @param id
         * @return
         */
        T queryById(Long id);
    
        /**
         * 查询所有数据
         * @return
         */
        List<T> queryAll();
    
        /**
         * 跟据查询条件查询记录数
         * @param t
         * @return
         */
        Integer queryCountByWhere(T t);
    
        /**
         * 跟据查询条件查询数据列表
         * @param t
         * @return
         */
        List<T> queryListByWhere(T t);
    
        /**
         * 分页查询数据
         * @param page
         * @param rows
         * @return
         */
        List<T> queryByPage(Integer page,Integer rows);
    
        /**
         * 跟据查询条件查询一个数据
         * @param t
         * @return
         */
        T queryOne(T t);
    
        /**
         * 保存数据
         * @param t
         */
        void save(T t);
        /**
         * 保存数据,忽略空字段
         * @param t
         */
        void saveSelective(T t);
    
        /**
         * 更新数据
         * @param t
         */
        void updateById(T t);
    
        /**
         * 更新数据,忽略空字段
         * @param t
         */
        void updateByIdSelective(T t);
    
        /**
         * 跟据id删除数据
         * @param id
         */
        void deleteById(Long id);
    
        /**
         * 跟据id列表删除数据
         * @param ids
         */
        void deleteByIds(List<Object> ids);
    
    }

    itemService 继承baseService

    public interface ItemService extends BaseService<Item> {
        /**
         * 保存商品与描述
         * @param item
         * @param desc
         */
        void saveItemDesc(Item item, String desc);
    
        /**
         * 分页查询商品信息
         * @param page
         * @param rows
         * @return
         */
        TaoResult<Item> queryItemByPage(Integer page, Integer rows);
    }

    BaseServiceIml

    public class BaseServiceImpl<T extends BasePojo> implements BaseService<T> {
    
        private Class<T> clazz;
    
        public BaseServiceImpl() {
            // 获取父类的type
            Type type = this.getClass().getGenericSuperclass();
    
            // 强转为ParameterizedType,可以使用获取泛型类型的方法
            ParameterizedType pType = (ParameterizedType) type;
    
            // 获取泛型的class
            this.clazz = (Class<T>) pType.getActualTypeArguments()[0];
        }
    
        @Autowired
        private Mapper<T> mapper;
    
        @Override
        public T queryById(Long id) {
            return mapper.selectByPrimaryKey(id);
        }
    
        @Override
        public List<T> queryAll() {
            return mapper.select(null);
        }
    
        @Override
        public Integer queryCountByWhere(T t) {
            return mapper.selectCount(t);
        }
    
        @Override
        public List<T> queryListByWhere(T t) {
            return mapper.select(t);
        }
    
        @Override
        public List<T> queryByPage(Integer page, Integer rows) {
            PageHelper.startPage(page, rows);
            List<T> list = mapper.select(null);
            return list;
        }
    
        @Override
        public T queryOne(T t) {
            return mapper.selectOne(t);
        }
    
        @Override
        public void save(T t) {
            if (t.getCreated() == null) {
                t.setCreated(new Date());
                t.setUpdated(t.getCreated());
            }
            mapper.insert(t);
        }
    
        @Override
        public void saveSelective(T t) {
            if (t.getCreated() == null) {
                t.setCreated(new Date());
                t.setUpdated(t.getCreated());
            }
            mapper.insertSelective(t);
        }
    
        @Override
        public void updateById(T t) {
            if (t.getUpdated() == null) {
                t.setUpdated(new Date());
            }
            mapper.updateByPrimaryKey(t);
        }
    
        @Override
        public void updateByIdSelective(T t) {
            if (t.getUpdated() == null) {
                t.setUpdated(new Date());
            }
            mapper.updateByPrimaryKeySelective(t);
        }
    
        @Override
        public void deleteById(Long id) {
            mapper.deleteByPrimaryKey(id);
        }
    
        @Override
        public void deleteByIds(List<Object> ids) {
            //组装id列表条件
            Example example = new Example(clazz);
            Example.Criteria criteria = example.createCriteria();
            criteria.andIn("id", ids);
            mapper.deleteByExample(example);
        }
    }

    itemServiceImpl

    @Service
    public class ItemServiceImpl extends BaseServiceImpl<Item> implements ItemService {
        @Autowired
        private ItemDescService descService;
    
        @Override
        public void saveItemDesc(Item item, String desc) {
            //保存商品信息
            item.setStatus(1);
            super.saveSelective(item);
    
            //保存商品描述
            ItemDesc itemDesc = new ItemDesc();
            itemDesc.setItemId(item.getId());
            itemDesc.setItemDesc(desc);
            descService.saveSelective(itemDesc);
    
            //发送mq
            this.sendMq(item.getId(),"save");
        }
    
        @Autowired
        private JmsTemplate jmsTemplate;
        @Autowired
        private Destination destination;
        private final ObjectMapper mapper = new ObjectMapper();
        /**
         * 发送消息
         * @param itemId 商品id
         * @param type 操作的业务类型:save,update,delete
         */
        private void sendMq(final Long itemId, final String type){
            jmsTemplate.send(destination, new MessageCreator() {
                @Override
                public Message createMessage(Session session) throws JMSException {
                    //构造消息内容
                    Map<String, Object> map = new HashMap<>();
                    map.put("itemId", itemId);
                    map.put("type", type);
    
                    //创建消息对象
                    TextMessage msg = new ActiveMQTextMessage();
                    try {
                        String json = mapper.writeValueAsString(map);
                        //设置消息返回
                        msg.setText(json);
                    } catch (JsonProcessingException e) {
                        e.printStackTrace();
                    }
                    return msg;
                }
            });
        }
    
        @Override
        public TaoResult<Item> queryItemByPage(Integer page, Integer rows) {
            TaoResult<Item> result = new TaoResult<>();
            //设置分页
            PageHelper.startPage(page, rows);
            //开始查询数据
            List<Item> items = super.queryListByWhere(null);
            //设置数据列表返回
            result.setRows(items);
    
            //设置total返回
            PageInfo<Item> info = new PageInfo<Item>(items);
            result.setTotal(info.getTotal());
    
            return result;
        }
    }
  • 相关阅读:
    C#使用各种时间戳及转换
    Rust借用机制的理解分析
    C# QRCoder 生成二维码
    Android 使用 JCIFS 访问共享文件
    Linux samba 创建共享盘
    WPF 等待对话框
    IIS实现Nginx功能:转发
    js jquery ajax跨域
    依赖注入
    .net standard
  • 原文地址:https://www.cnblogs.com/appc/p/8964818.html
Copyright © 2011-2022 走看看