iteye_19889 2014-07-18 10:12
浏览 3455
已采纳

使用Mybatis框架,如何使查询结果float数据保留两位小数

    <id column="id" property="id" />
    <result column="sku_code" property="skuCode" />
    <result column="sku_price" property="skuPrice" />
    <result column="ori_price" property="oriPrice" />
    <result column="sku_select_value" property="skuSelectValue" />
    <result column="quantity" property="quantity" />
    <result column="buy_limit" property="buyLimit" />
    <result column="img" property="img" />
    <result column="product_id" property="productId" />
     <result column="modifyTime" property="modify_time" />
</resultMap>


<sql id="ProductSkuInfo">
    SELECT 
        product_id,
        id,
        sku_code,
        sku_price,
        ori_price,
        sku_select_value,
        quantity,
        img,
        buy_limit,
        modify_time
    from t_product_sku

</sql>
  • 写回答

3条回答 默认 最新

  • iteye_11009 2014-07-18 12:29
    关注

    自定义一个TypeHander继承FloatTypeHandler,例子
    public class TwoDecimalFloatTypeHander extends FloatTypeHandler{

    @Override
      public void setNonNullParameter(PreparedStatement ps, int i, Float parameter, JdbcType jdbcType)
          throws SQLException {
        ps.setFloat(i, parameter);
      }
    
      @Override
      public Float getNullableResult(ResultSet rs, String columnName)
          throws SQLException {
        return NumberTool.keepTwoDecimalFloat(rs.getFloat(columnName));
      }
    
      @Override
      public Float getNullableResult(ResultSet rs, int columnIndex)
          throws SQLException {
        return NumberTool.keepTwoDecimalFloat(rs.getFloat(columnIndex));
      }
    
      @Override
      public Float getNullableResult(CallableStatement cs, int columnIndex)
          throws SQLException {
        return NumberTool.keepTwoDecimalFloat(cs.getFloat(columnIndex));
      }
    

    }
    /**
    * Float 保留两位小数
    * @return
    */
    public static Float keepTwoDecimalFloat(Float f) {
    DecimalFormat decimalFormat=new DecimalFormat(".00");
    return Float.parseFloat(decimalFormat.format(f));
    }

    然后在mybatis配置中引入自定义的handler处理器,例:












        <collection property="orderItems" ofType="com.ldlife.accountserver.user.domain.OrderItem" column="orderId">  
            <id column="itemid" property="itemid"/>  
            <result column="order_id" property="orderId"/>
            <result column="seller_id" property="sellerId"/>  
            <result column="productSku_id" property="productSkuId"/>  
            <result column="sku_code" property="skuCode"/>  
            <result column="amount" property="amount"/> 
            <result column="create_date" property="createDate"/>
            <result column="ori_price" property="oriPrice" typeHandler="com.ldlife.accountserver.base.mybatis.typehander.TwoDecimalFloatTypeHander"/>
            <result column="price" property="price" typeHandler="com.ldlife.accountserver.base.mybatis.typehander.TwoDecimalFloatTypeHander"/> 
        </collection> 
    </resultMap>
    <sql id="orderInfo">
        SELECT
            o.id,
            o.deliver_fee,
            o.note,
            o.payment_way,
            o.product_total_price as productTotal_price,
            o.order_state,
            o.total_price,
            o.buyer_id,
            o.deliver_id,
            o.receipt_date,
            o.receipt_time,
            o.create_date,
            oi.itemid,
            oi.order_id,
            oi.seller_id,
            oi.product_sku_id as productSku_id,
            oi.sku_code,
            oi.amount,
            oi.ori_price,
            oi.price
        FROM
            t_order o 
            left join t_order_item oi
            on o.id = oi.order_id
            where 1=1
    <l>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条