静态工具类注入mapper对象

简介: 项目中需要在一个utils工具类中,调用mapper对象进行查询并进行排序后选出数值最小的数值,然而静态方法里面直接注入会报空指针的错误。现在总结一下解决办法。

需求


项目中需要在一个utils工具类中,调用mapper对象进行查询并进行排序后选出数值最小的数值,然而静态方法里面直接注入会报空指针的错误。现在总结一下解决办法。


重要点


1若要进行排序,需要重写该实体类的compareTo()方法,实现Comparable接口。代码如下


@Override
  public int compareTo(Object o) {
    if(o instanceof TbHotelMenu){
      TbHotelMenu menu=(TbHotelMenu) o;
      int oP = (int) Double.parseDouble(menu.getMenuPrice());
      int tP = (int) Double.parseDouble(this.getMenuPrice());
      return tP-oP;//升序
//return tP-oP;//降序
    }
    return 0;
  }   


2、需要将该工具类注入到spring 。applicationContext-service.xml配置文件代码如下


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:context="http://www.springframework.org/schema/context"
     xmlns:p="http://www.springframework.org/schema/p"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xmlns:tx="http://www.springframework.org/schema/tx"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-4.0.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
      http://www.springframework.org/schema/util
      http://www.springframework.org/schema/util/spring-util-4.0.xsd
">
  <!-- 扫描包加载Service实现类 -->
  <context:component-scan base-package="com.test.server.service"></context:component-scan>
  <context:component-scan base-package="com.test.server.util"></context:component-scan>


3


autils类上面添加@Component注解


b@Autowired注入需要使用的mapper对象,注意不是静态的


c、创建一个静态的这个utils的对象


d、创建一个init方法,添加@PostConstruct注解,代码内容如下


@Component
public class LowestMenuPrice {
  @Autowired
    private  TbHotelMenuMapper menuMapper;
  private static LowestMenuPrice menuPrince; 
   @PostConstruct  
      public void init(){  
     menuPrince = this;  
     menuPrince.menuMapper = this.menuMapper;    
      }  
   //获取酒楼菜单价钱最低的菜单价格
    public static String getLowestPrince(long hotelId){
      TbHotelMenuExample example=new TbHotelMenuExample();
      TbHotelMenuExample.Criteria criteria = example.createCriteria();
      criteria.andHotelIdEqualTo(hotelId);
      List<TbHotelMenu> menuList = menuPrince.menuMapper.selectByExample(example);
      if(menuList!=null&&menuList.size()>0){
        Collections.sort(menuList);
        String menuPrice = menuList.get(0).getMenuPrice();
        Double valueOf = Double.valueOf(menuPrice);
      DecimalFormat Format=new DecimalFormat("#.00");  
          String price=Format.format(valueOf); 
          return price;
      }
      return "0.00";
    }   
}
相关文章
|
3月前
|
Java API Spring
springBoot:注解&封装类&异常类&登录实现类 (八)
本文介绍了Spring Boot项目中的一些关键代码片段,包括使用`@PathVariable`绑定路径参数、创建封装类Result和异常处理类GlobalException、定义常量接口Constants、自定义异常ServiceException以及实现用户登录功能。通过这些代码,展示了如何构建RESTful API,处理请求参数,统一返回结果格式,以及全局异常处理等核心功能。
|
7月前
|
Java
java反射-获取类的Class对象方式
java反射-获取类的Class对象方式
|
Java
Java反射类 - Method类源码解析
Java反射类 - Method类源码解析
109 0
|
8月前
|
XML Java 数据格式
怎么通过通过 p 名称空间配置 bean以及怎么去引用/注入其它 bean 对象--ref和怎么去引用/注入内部 bean 对象-内部 bean 对象
怎么通过通过 p 名称空间配置 bean以及怎么去引用/注入其它 bean 对象--ref和怎么去引用/注入内部 bean 对象-内部 bean 对象
93 0
|
8月前
|
XML 缓存 Java
MyBatis原理分析之获取Mapper接口的代理对象
MyBatis原理分析之获取Mapper接口的代理对象
173 0
|
缓存 安全 Java
Java反射:深入了解Class对象
Java是一门强类型语言,它要求在编译时知道所有的类和对象类型。然而,有时候我们需要在运行时动态地获取和操作类的信息,这就是Java反射的用武之地。本文将深入探讨Java反射,特别是与Class对象相关的内容。
119 0
|
XML Java 数据格式
案例02 基于xml配置的构造方法注入案例
通过构造方法方式来演示Spring容器在应用中是如何实现依赖注入的,实现Student输出学生姓名和年龄。
74 0
|
存储 Java Spring
Spring框架中注入集合对象
你好看官,里面请!今天笔者讲的是在Spring框架中关于注入集合对象的用法(有示例!全网最详细!!) 不懂可以在评论区留言,我看到会及时回复。 注意:本文仅用与学习参考,不可用于商业用途。
814 3
Spring框架中注入集合对象
|
Java
查看JDK动态代理生成的类的内容
首先我们先定义一个接口: public interface PersonInter { String test(String str); }接着就是我们想的要生成的JDK代理类源码的代码: public class JdkProxy...
1529 0
|
Java 自动驾驶 小程序
java面试题:哪种依赖注入方式你建议使用,构造器注入,还是Setter方法 注入?
java面试题:哪种依赖注入方式你建议使用,构造器注入,还是Setter方法 注入?
java面试题:哪种依赖注入方式你建议使用,构造器注入,还是Setter方法 注入?