心大自然宽 2022-06-21 10:28 采纳率: 72.7%
浏览 51
已结题

多线程实现 重写run(),怎么注入使用mapper文件操作数据库

public class EchoThread implements Runnable{
private Socket client;

InputStream inputStream;
private TestUtils testUtils;

// @Autowired
// private EquipmentMapper equipmentMapper = SpringContextUtil.getBean(EquipmentMapper.class);
@Autowired
private EquipmentMapper equipmentMapper;

public EchoThread(Socket client){
    this.client=client;
}



@PostConstruct
@Override
public void run() {
    //this.equipmentMapper= BeanContext.getApplicationContext().getBean(EquipmentMapper.class);

    try {



        while (true){
            inputStream=client.getInputStream();
            byte[] bytes = new byte[1024];
            inputStream.read(bytes);
            String string = new String(bytes);
            System.out.println("我是传过来的数"+string);
            String[] str = string.split("AAAA");
            StringBuffer sb = new StringBuffer();
            List<Equipment> equipmentList = new ArrayList<>();
            List storage = new ArrayList();
            Equipment equipment = new Equipment();
            System.out.println("我是str"+str);
            //String sql = "INSERT INTO TABLE_NAME VALUES (?,?,?)";//插入sql
            for (int i=0; i<str.length;i++){
                String dd =str[i].toString();
                System.out.println("我是dd分隔后的数"+dd);
                String ee=dd.substring(0,6);
                System.out.println("我是ee分隔后的数"+ee);

                if(ee.equals("040302") ){
                    String ee1=dd.substring(6,10);
                    // System.out.println("我是最新测试"+ee1);
                    long put_Vlue = Long.parseLong(ee1, 16);//Long.parseLong(字符串,该字符串为几进制)
                    storage.add("溶解氧:"+put_Vlue*0.001);
                    // System.out.println(put_Vlue);//输出结果
                    //System.out.println("我我我我我我我我"+storage);
                    System.out.println("溶解氧:"+put_Vlue);

                    equipment.setDissolvedName("溶解氧");
                    equipment.setDissolvedValue(put_Vlue*0.001);
                    equipmentList.add(equipment);
                    System.out.println("我是是是是"+equipmentList);
                }else if(ee.equals("050404")){
                    String ee1=dd.substring(6,10);
                    String ee2=dd.substring(10,14);
                    //System.out.println("我是最新测试"+ee2);
                    long put_Vlue = Long.parseLong(ee1, 16);//Long.parseLong(字符串,该字符串为几进制)
                    long put_Vlue2 = Long.parseLong(ee2, 16);
                    storage.add("土壤温湿度:"+put_Vlue*0.1+","+put_Vlue2*0.1);
                    System.out.println("土壤温湿度");

                    equipment.setSoilName("土壤温湿度");
                    equipment.setSoilValue(put_Vlue*0.1);
                   // equipment.setSoilValue(String.valueOf(put_Vlue2*0.1));
                    equipmentList.add(equipment);

                }else if(ee.equals("070302")){
                    String ee1=dd.substring(6,10);
                    long put_Vlue = Long.parseLong(ee1, 16);
                    storage.add("浊度:"+put_Vlue*0.01);
                    System.out.println("浊度");

                    equipment.setTurbidityName("浊度");
                    equipment.setTurbidityValue(put_Vlue*0.01);
                    equipmentList.add(equipment);
                }else if(ee.equals("030302")){
                    String ee1=dd.substring(6,10);
                    long put_Vlue = Long.parseLong(ee1, 16);
                    storage.add("水质PH:"+put_Vlue*0.01);
                    System.out.println("水质PH");

                    equipment.setWaterName("水质PH");
                    equipment.setWaterValue(put_Vlue*0.01);
                    equipmentList.add(equipment);
                }else if(ee.equals("060302")){
                    String ee1=dd.substring(6,10);
                    long put_Vlue = Long.parseLong(ee1, 16);
                    storage.add("土壤PH:"+put_Vlue*0.01);
                    System.out.println("土壤PH");

                    equipment.setSoilPHName("土壤PH");
                    equipment.setSoilPHValue(put_Vlue*0.01);
                    equipmentList.add(equipment);
                }else if(ee.equals("010302")){
                    String ee1=dd.substring(6,10);
                    long put_Vlue = Long.parseLong(ee1, 16);
                    storage.add("水温:"+put_Vlue*1);
                    System.out.println("水温");

                    equipment.setTemperatureName("水温");
                    equipment.setTemperatureValue(put_Vlue*1);
                    equipmentList.add(equipment);
                }else if(ee.equals("080304")){
                    String ee1=dd.substring(6,14);

                    System.out.println("明渠流量计");

                    equipment.setChannelName("明渠流量计");
                    equipment.setChannelValue(30.2);
                    equipmentList.add(equipment);
                }else if(ee.equals("020302")){
                    String ee1=dd.substring(6,10);
                    long put_Vlue = Long.parseLong(ee1, 16);

// storage.add("水位:"+put_Vlue0.001);
System.out.println("水位");
equipment.setWaterlevelNmae("水位");
equipment.setWaterlevelValue(put_Vlue
0.001);
equipmentList.add(equipment);
}else{
System.out.println("没有数据");
}
}
System.out.println("我是最后传递的list"+equipmentList);
equipmentMapper.equipserter(equipmentList);

        }

    } catch (IOException e) {
        e.printStackTrace();
    }


}

}

img


我想调用mapper把数据存入数据库中,但是调用一直是null,这个要怎么解决有知道的牛人

img

  • 写回答

1条回答 默认 最新

  • 微笑精灵 2022-06-21 18:43
    关注

    你创建这个类的时候用有参构造,把你在外部的controller什么的里面的mapper作为参数穿进去。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月17日
  • 创建了问题 6月21日

悬赏问题

  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?