项目学习《第四天》

RedisService

stringToBean

    /*将字符串转换成任意类型*/
    private <T> T  stringToBean(String str, Class<T> clazz){
        if(str == null || str.length() <= 0 || clazz == null){
            return null;
        }
        if(clazz == int.class || clazz == Integer.class){
            return (T) Integer.valueOf(str);
        }else if(clazz == long.class || clazz == Long.class){
            return (T) Long.valueOf(str);
        }else if(clazz == String.class){
            return (T) str;
        } else {
            return JSON.toJavaObject(JSON.parseObject(str),clazz);
        }
    }

惯例
项目学习《第四天》
使用完连接池后返回连接池

    /*返回连接池*/
    private void returnToPool(Jedis jedis){
        if(jedis != null){
            jedis.close();
        }
    }

以上三个方法是在使用redis服务的时候会用到方法。

下面开始就是一些redis服务操作。

从redis连接池中获取实例

    /*从redis连接池中获取实例*/
    public <T> T get(KeyPrefix prefix, String key, Class<T> clazz){
        Jedis jedis = null;
        try{
            jedis = jedisPool.getResource(); //获取资源
            String realKey = prefix.getPrefix() + key; //对key增加前缀,既可用于分类,也可避免key重复
            String str = jedis.get(realKey); //得到键
            T t = stringToBean(str,clazz); //转换成任意对象
            return t;
        }finally {
            returnToPool(jedis);
        }
    }

惯例
项目学习《第四天》
存储对象

    /*存储对象*/
    public <T> Boolean set(KeyPrefix prefix, String key, T value){
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource(); //获取资源
            String str = beanToString(value); //将值转换成字符串
            if(str ==null || str.length() <= 0){
                return false; //值为空或不存在就返回false
            }
            String realKey = prefix.getPrefix() + key;
            int seconds = prefix.expireSeconds(); //获取过期时间
            /*判断是否过期*/
            if(seconds <= 0){
                jedis.set(realKey, str);
            }else {
                jedis.setex(realKey, seconds, str);
            }
            return true;
        }finally {
            returnToPool(jedis);
        }
    }

惯例
项目学习《第四天》
删除key以及判断key是否存在

    /*删除key*/
    public boolean del(KeyPrefix prefix, String key){
        Jedis jedis = null;
        try{
            jedis = jedisPool.getResource();
            String realKey = prefix.getPrefix() + key;
            Long del = jedis.del(realKey);
            return del > 0;
        }finally {
            returnToPool(jedis);
        }
    }

    /*判断key是否存在*/
    public boolean exists(KeyPrefix prefix, String key){
        Jedis jedis = null;
        try{
            jedis = jedisPool.getResource();
            String realKey = prefix.getPrefix() + key;
            return jedis.exists(realKey);
        }finally {
            returnToPool(jedis);
        }
    }

惯例
项目学习《第四天》

OrderMapper

/*order表SQL语句*/
@Mapper
@Repository
public interface OrderMapper {

    @Delete("delete from tb_order where order_ id=#{orderId}")
    int deleteByPrimaryKey(String orderId);

    @Insert("insert into tb_order(order_id, payment, payment_type,post_fee, status, create_time, update_time, payment_time, consign_time, end_time, close_time, shipping_name, shipping_code, user_id, buyer_message, buyer_nick, buyer_rate) values (#{orderId}, #{payment}, #{paymentType},#{postFee}, #{status}, #{createTime},#{updateTime}, #{paymentTime}, #{consignTime},#{endTime}, #{closeTime}, #{shippingName},#{shippingCode}, #{userId}, #{buyerMessage},#{buyerNick}, #{buyerRate)")
    int insert(Order record);

    @Select("select order_id, payment, payment_type, post_fee, status, create_time, update_time, payment_time, consign_time, end_time, close_time, shipping_name, shipping_code, user_id,buyer_message, buyer_nick, buyer_rate from tb_order where order_id=#{orderId}")
    Order selectByPrimaryKey(String orderId);

    @Select("select order_id, payment, payment_type, post_fee, status, create_time, update_time,payment_time, consign_time, end_time, close_time, shipping_name, shipping_code, user_id,buyer_message, buyer_nick, buyer_rate from tb_order where order_id is not null AND payment_type=#{paymentType} AND status = #{status} AND create_time BETWEEN #{minOrderTime} AND #{maxOrderTime}ORDER BY create_time limit #{start},#{end}")
    List<Order> list(Order order);

    @Select("select order_id, payment, payment_type, post_fee, status, create_time, update_time, payment_time, consign_time, end_time, close_time, shipping_name, shipping_code, user_id,buyer_message, buyer_nick, buyer_rate, refundStatus, refundReason, isRefund from tb_order where isRefund = 1 AND refundStatus = #{refundStatus} limit #{start},#{end}")
    List<Order> listRefund(Order order);

    @Select("select order_id, payment, payment_type, post_fee, status, create_time, update_time, payment_time, consign_time, end_time, close_time, shipping_name, shipping_code, user_id,buyer_message, buyer_nick, buyer_rate from tb_order")
    List<Order> selectAll();

    @Select("select count(*) from tb_order where date_format( create_time, '%Y-%m') = date_format(now(), '%Y-%m')")
    Integer selectCurOrderNum();

    @Select("select count(*) from tb_order where period_diff(date_format(now(),'%Y%m'), date_format(create_time,'%Y%m')) = 1")
    Integer selectLastOrderNum();

    @Select("SELECT SUM(payment) FROM tb_order where status = 5 AND date_format(create_time, '%Y-%m') = date_format(now(), '%Y-%m')")
    Long selectCurPayment();

    @Select("SELECT SUM(payment) FROM tb_order where  status = 5 AND  period_diff(date_format(now(),'%Y%m'), date_format(create_time,'%Y%m')) = 1")
    Long selectLastPayment();

    @Select("SELECT count(*) FROM tb_order where date_format(update_time, '%Y-%m') = date_format(now(), '%Y-%m') AND  refundStatus = 3")
    Integer selectCurRefundOrder();

    @Select("SELECT count(*) FROM tb_order where period_diff(date_format(now(),'%Y%m'), date_format(update_time,'%Y%m')) = 1 AND  refundStatus = 3")
    Integer selectLastRefundOrder();

    @Select("SELECT sum(payment) FROM tb_order WHERE create_time BETWEEN  #{createTime, jdbcType=DATE} AND  date_add(#{createTime, jdbcType=DATE}, interval 1 day)")
    Integer selectDayOrderSum(Order order);

    @Select("SELECT count(*) FROM tb_order WHERE create_time BETWEEN  #{createTime, jdbcType=DATE} AND  date_add(#{createTime, jdbcType=DATE}, interval 1 day)")
    Integer selectDayOrderNum(Order order);

    @Update("update tb_order set refundStatus=#{refundStatus where order_id=#{orderId}")
    Integer updateByPrimaryKey(Order record);
}

service层就不发出来了(真的觉得写sql语句需要很大的细心和耐心,我是看晕了写晕了还花了很久时间