0 0

getHibernateTemplate()为NUll,困扰好几天了,网上也找了好些方法一直解决不掉15

小弟刚刚开始学SSH,是用的Struts2+Hibernate+Spring,运行的时候发现getHibernateTemplate()得到的模板类始终是nUll值,郁闷好几天了,一直在我网上试各种方法,迄今任为解决,恳请各位指教咯!

applicationContext.xml:(事务处理这儿没贴出来)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
         http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
         http://www.springframework.org/schema/tx
         http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
         http://www.springframework.org/schema/aop
         http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">         
	<!-- 定义数据源 -->	
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName"
			value="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://localhost:3306/jjufriend"></property>
		<property name="username" value="root"></property>
		<property name="password" value="root"></property>
	</bean>
	
	<!-- 定义Hibernate的sessionFactory -->	
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		
		<!-- Hibernate  的sessionFactory的属性 -->
		
		<property name="hibernateProperties">		
			<props>
				<!-- 数据库方言 -->
				<prop key="hibernate.dialect">
					org.hibernate.dialect.SQLServerDialect
				</prop>
				<!-- 显示Hibernate持久化操作所生成的SQL语句 -->
				<prop key="hibernate.show_sql">true</prop>
				<!-- 将SQL脚本进行格式化后再输出 -->
				<prop key="hibernate.format_sql">true</prop>			
			</props>
		</property>
		<!-- 列出全部的映射文件 -->
		<property name="mappingResources">
			<list>						
				<value>com/jjufriend/student/model/Student.hbm.xml</value></list>
		</property></bean>
	
	<!-- 配置dao组件 -->
	<bean id="studentDao"
		class="com.jjufriend.student.dao.impl.StudentDaoHibernate">
		<!-- 依赖注入DAO组件所必需的SessionFactory引用 -->
		<property name="sessionFactory" ref="sessionFactory">
		</property>
	</bean>
	<!-- 配置业务逻辑组件 -->
	<bean id="mgr"
		class="com.jjufriend.student.service.impl.StudentManagerImpl">
		<property name="studentDao" ref="studentDao"></property>
	</bean>
	


studentDao.java:
package com.jjufriend.student.dao;

import java.util.List;

import com.jjufriend.student.model.Student;

public interface StudentDao {
	
	Student get(Integer id);
	
	Integer save(Student student);
	
	void update(Student student);
	
	void delete(Student student);
	
	void delete(Integer id);
	
	List<Student> findAll();
	
	Student findStudentByNameAndPass(String username,String password);
	
	Student findByName(String username);

}


StudentDaoHibernate.java:
package com.jjufriend.student.dao.impl;

import java.io.Serializable;
import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.jjufriend.student.dao.StudentDao;
import com.jjufriend.student.model.Student;

public class StudentDaoHibernate extends HibernateDaoSupport implements
		StudentDao,Serializable {
	private SessionFactory sessionFactory;  
	HibernateTemplate ht = this.getHibernateTemplate() ;
	


	public void delete(Student student) {
		// TODO Auto-generated method stub
		getHibernateTemplate().delete(student);

	}

	public void delete(Integer id) {
		// TODO Auto-generated method stub
		getHibernateTemplate().delete(get(id));

	}

	public List<Student> findAll() {
		// TODO Auto-generated method stub
		return (List<Student>)getHibernateTemplate().find("from Student");
		
	}

	public Student findByName(String username) {
		
		List stu =  getHibernateTemplate().find("from Student st where st.username = ?",username);
		
		if(stu != null && stu.size() >= 1){
			return (Student)stu.get(0);
		}
		
		return null;
	}

	public Student findStudentByNameAndPass(String username, String password) {
		// TODO Auto-generated method stub
		List students = null;
		try{
			
		//	HibernateTemplate temple = this.getHibernateTemplate();
System.out.println("模板类是否为NULL>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+ht);
			
//	取出所有		students = temple.find("from student");
						students = ht.find("from student st where st.username = " + username + " and st.password = " + password);
				
		}catch(Exception  e){
			System.out.println("查找过程中出现异常..............");
			e.printStackTrace();
		}
		if(students != null && students.size() >= 1){
			return (Student)students.get(0);
			}
		return null;
	}

	public Student get(Integer id) {
		
		return (Student)getHibernateTemplate().get(Student.class, id);
		
	}

	public Integer save(Student student) {
		return (Integer)getHibernateTemplate().save(student);
	}

	public void update(Student student) {
		// TODO Auto-generated method stub
		getHibernateTemplate().update(student);

	}

}

StudentManager.java:
package com.jjufriend.student.service;

import com.jjufriend.student.model.Student;

public interface StudentManager {

	int addStudent(Student student) throws Exception;
	
	int loginValid(Student student) throws Exception;
	
	boolean validateName(String username) throws Exception;
}


StudentManagerImpl.java:
package com.jjufriend.student.service.impl;

import com.jjufriend.student.dao.StudentDao;
import com.jjufriend.student.dao.impl.StudentDaoHibernate;
import com.jjufriend.student.model.Student;
import com.jjufriend.student.service.StudentManager;

public class StudentManagerImpl implements StudentManager {
	/*2009-11-12 22:44修改 出去new StudentDaoHibernate() 	*/
	private StudentDao studentDao = new StudentDaoHibernate() ;
	 
//	private ApplicationContext cxt = 
//			new FileSystemXmlApplicationContext("../webapps/JJUFriend/WEB-INF/applicationContext.xml");
//	 studentDao =(StudentDaoHibernate)cxt.getBean("studentDao");

	public void setStudentDao(StudentDao studentDao){
		
		this.studentDao = studentDao ;
	}
	

	public int addStudent(Student student) throws Exception {
		// TODO Auto-generated method stub
		try{
			studentDao.save(student);
			return student.getId();
			
		}catch(Exception e){
			e.printStackTrace();
			throw new Exception("新增用户时出现异常");
		}
		
	}

	public int loginValid(Student student) throws Exception {
		try{
			
System.out.println(studentDao);
System.out.println("是否取到页面提交的数据:Name="+student.getUsername());
			Student stu = studentDao.findStudentByNameAndPass(student.getUsername(), student.getPassword());
			if(stu != null ){
				return stu.getId();
			}
			
		}catch(Exception e){		
			System.out.println("验证用户登录时出现异常");
			e.printStackTrace();
		}
		
		// TODO Auto-generated method stub
		return -1;
	}

	public boolean validateName(String username) throws Exception {
		// TODO Auto-generated method stub
		try{
			if (studentDao.findByName(username) != null){
				return true ;
			}
			
			
		}catch(Exception e){
			System.out.println("验证用户名是否用效时出错");
			e.printStackTrace();
			
		}
		return false ; 
		
	}

}



问题的关键是通过方法getHibernateTemplate()不能正确得到HibernateTemplate对象,始终的空值,网上有很多解决的办法,差不多我都试过了,

下面这种方法是说不能直接new StudentDao对象,用下面这种方法取得,可以启动服务器老是不停地跳动,一直不停,直到报错。
//	private ApplicationContext cxt = 
//	new FileSystemXmlApplicationContext("../webapps/JJUFriend/WEB-INF/applicationContext.xml");
//	private StudentDao studentDao =(StudentDaoHibernate)cxt.getBean("studentDao");


还有些方法是直接从applicationContext.xml中的bean取得HibernateTemplate对象,始终都搞不定,望大家指教了。

(顶格的System.out.println()语句均是测试用的语句)


问题补充:
谢谢大家的热心帮助!!

确实其中出了不少问题,主要是最近网上看到解决这个方法的帖子很多,尝试过很多方法,都有点儿改晕了。


一楼的方法我尝试了,还是不行,
private ApplicationContext cxt =  this.getApplicationContext();   
	private StudentDao studentDao = (StudentDaoHibernate)cxt.getBean("studentDao"); 

其中那个this.getApplicationContext(); 方法根本不存在啊,无法取得配置文件。

之前类似的方法我也用过就是用
  private ApplicationContext cxt =    
 new FileSystemXmlApplicationContext("../webapps/JJUFriend/WEB-INF/applicationContext.xml");   
  private StudentDao studentDao =(StudentDaoHibernate)cxt.getBean("studentDao");  
取得,但是当启动服务器后,后台一直跑个不停,仿佛是个死循环似的。浏览器中通过http://localhost:8080访问都无效!


StudentDaoHibernate.java中的private SessionFactory sessionFactory;已经去掉

数据库方言也该过来了
2009年11月13日 12:49

9个答案 按时间排序 按投票排序

0 0

采纳的答案

我大至看了一下,个人感觉有两点不对:
   
    1、StudentManagerImpl.java中的
      private StudentDao studentDao = new StudentDaoHibernate() ;
     不应该new ,直接 = null 就可以。因为你已经使用了spring的注入。

    2、StudentDaoHibernate.java中的
      private SessionFactory sessionFactory;应该去掉。    
     HibernateTemplate ht = this.getHibernateTemplate() ;应该去掉。
     这两个是父类的属性,不需要你重载,也不该重载。即使你非要重载,那你也应该写上setter吧,要不spring找不到setter不还是会注入到父类中去么,所以你总是获得null。

    以上观点仅代表个人意见,如果说的不对,请批评和指正。

2009年11月13日 13:45
0 0

 public class StudentManagerImpl implements StudentManager {    
    
      private StudentDao studentDao ;    
      public static      StudentManagerImpl smi;
      public StudentManagerImpl()
      {
smi = this;
System.out.println("我自动生成了");
      }
 
      public void setStudentDao(StudentDao studentDao){    
          System.out.println("我自动调用了set方法");
          this.studentDao = studentDao ;    
      }    



 public class StudentDaoHibernate extends HibernateDaoSupport implements  
         StudentDao,Serializable {  
     private SessionFactory sessionFactory;    
     public static HibernateTemplate ht ; 

     public static StudentDaoHibernate  sdh;
public StudentDaoHibernate()
{
System.out.println("自动调用");
  ht = this.getHibernateTemplate();
  sdh = this;
}

 


通过这两节代码你看看spring在地下偷偷干了啥

StudentManagerImpl.smi 你看看是不是你要的东西

不要直接new

2009年11月13日 17:33
0 0

 public class StudentManagerImpl implements StudentManager {  
 
     private StudentDao studentDao ;  
          
     /**
      *这个方法是由 spring 自动调用的,只要定义了studentDao ,在类里放上   
    *getter/setter就不用管了
*    <bean id="mgr"  
*         class="com.jjufriend.student.service.impl.StudentManagerImpl">  
*         <property name="studentDao" ref="studentDao"></property>  
*     </bean>  
*   这里的property -name -ref 会帮你做好
    */
     public void setStudentDao(StudentDao studentDao){  
           
         this.studentDao = studentDao ;  
     }  

2009年11月13日 17:24
0 0

楼主,两个建议:
1.仔细对照书籍,按照书上的例子做一遍。你的问题主要是SPRING相关的不熟悉,所以hibernate砍掉,直接spring加载普通的类。先把简单的配置成功,再把hibernate,struts加进来,一个一个来。
2.出现问题一定要看控制台的信息,错误在哪行,是什么错误。

从你上面的发言可以看出,有些基础的概念还没掌握比如
ApplicationContext是什么?

你可以通过new 指定xml文件地址,获得spring环境,也可以通过依赖注入,也可以使用getWebApplicationContext(),当然要使用这个需要继承Spring提供的ActionSupport。建议你找本专业点书籍看,SSH的东西,光在问答上还是说不清的。

建议找本实战的书,什么 “深入浅出spring" struts+spring+hibernate集成。

按照书上的例子走一遍。

依赖注入需要为bean的变量提供setter。OVER...

2009年11月13日 16:53
0 0

楼主试下一楼的解决方法,个人觉得也是这样

2009年11月13日 16:02
0 0

楼主介个配置错误实在是太多了哦~

1楼2楼3楼说的都对~

你按照1楼说的做吧,分给1楼吧.

2009年11月13日 15:57
0 0

org.hibernate.dialect.SQLServerDialect 
看来也是可以的,整个运行都没问题,没出现楼主说的问题

2009年11月13日 14:25
0 0

<property name="url" value="jdbc:mysql://localhost:3306/jjufriend">

为什么你数据库用的是MySQL,而sessionFactory里的方言设置是
<prop key="hibernate.dialect">  
org.hibernate.dialect.SQLServerDialect  
</prop>  
,用的是SQLServer的,这肯定不行吧?!

2009年11月13日 14:04
0 0

 private ApplicationContext cxt =  this.getApplicationContext();
 private StudentDao studentDao = (StudentDaoHibernate)cxt.getBean("studentDao");


studentDao 对象直接 new 的话里面是没有Hibernate上下文的。
只能取得在配置文件中自动生成的实例

2009年11月13日 13:49

相关推荐

    关于Windows 9x的vmm32问题解决方法

    关于Windows 9x的vmm32问题解决方法

    Linux下用sdcc开发51单片机,该示例是中断处理程序.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    施工作业人员配备与人员资格及职责分工表.docx

    施工作业人员配备与人员资格及职责分工表.docx

    Tangram-ES 0.17.1 64位 Debug/Release版 基于OpenGL地图渲染引擎

    Tangram-ES 0.17.1 基于OpenGL ES地图渲染引擎 编译环境为Windows 10 Pro 22H2 + VS2022 + vcpkg 包管理器 编译结果包含64位 Windows平台 Release/Debug版 引擎使用imgui界面库显示地图瓦片,使用OpenGL ES库渲染画面

    后端技术详细设计文档模板

    后端技术详细设计文档 目录 1 引言 项目概述 设计目标 2 术语 3 设计概述 3.1 设计理念 3.2 设计方案 3.3 功能范围 4 系统架构 4.1 整体架构 4.2 功能架构 4.3 时序图 5 详细设计 6 数据结构设计 7 任务拆分

    2024年全国职业院校技能大赛集成电路应用开发赛项竞赛试题(09 卷)

    2024年全国职业院校技能大赛集成电路应用开发赛项竞赛试题(09 卷)

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本124.0.6338.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom124.0.6338.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver124.0.6338.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

    2022CUMCM(C题).zip

    2022CUMCM(C题).zip

    chromedriver-win64_116.0.5818.0.zip

    chromedriver-win64_116.0.5818.0.zip

    组织经验萃取与课程开发“变形记”工作坊 .pptx

    组织经验萃取与课程开发“变形记”工作坊 .pptx

    VBA按模板填写数据拆分工作表.xlsm

    VBA按模板填写数据拆分工作表.xlsm 将数据表的每一行数据填入到模板表,然后生成一个工作表

    VBA复制指定路径文件待粘贴【可用于自动发微信文件】.xlsm

    VBA复制指定路径文件待粘贴【可用于自动发微信文件】.xlsm 有时候我们需要复制指定路径的文件,然后到指定的位置或软件进行粘贴 所有我们可根据指定的路径文件进行复制,待粘贴

    Delphi 12 控件之LMD.VCL.Full.Version.zip

    LMD.VCL.Full.Version.zip

    四路抢答器电路---B站迂途.ms14

    四路抢答器电路---B站迂途.ms14

    【雷达成像】 SAR合成孔径雷达图像点目标【含Matlab源码 4670期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    学习51单片机时的代码仓库,持续跟新.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    工作项目-圣诞小游戏-扩展:一个可以实现自动打游戏的Java程序.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    YOLO 数据集:星云检测(4类)【包含划分好的数据集、类别class文件、数据可视化脚本】

    数据保存按照YOLOV5文件夹保存,可直接用作yolo检测。 标注格式为:classes,x_centre、y_centre、w、h (yolo的相对坐标标注) 数据分为分为训练集和验证集: 训练集datasets-images-train:20837张图片和20837个标签txt文件组成 验证集datasets-images-val:1872张图片和1872个标签txt文件组成 测试集datasets-images-val:1223张图片和1223个标签txt文件组成 【txt类别文本文件】标签类别txt格式 为了方便查看数据,提供了可视化py文件,随机传入一张图片即可绘制边界框,并且保存在当前目录。脚本无需更改,可以直接运行可视化图像!! yolov5的改进实战:https://blog.csdn.net/qq_44886601/category_12605353.html

    啊哈算法哈磊基于队列的优化Bellman-ford算法搜索单源最短路径-Java实现

    本资源源自《啊哈算法》的高级算法实践,专注于讲解基于队列优化的Bellman-Ford算法在单源最短路径问题上的应用,并提供了Java语言的实现代码。哈磊老师以其独特的教学视角,不仅详细解析了传统Bellman-Ford算法的原理及其在处理含有负权边图中的优势,还深入介绍了如何通过队列优化(通常指SPFA算法)来加速这一过程,减少不必要的松弛操作,提高算法效率。 Java实现部分,代码实现清晰,注释详尽,从初始化距离数组、设置源节点开始,逐步展示如何维护一个队列来记录待检查的顶点,并通过队列进行有效的顶点遍历和松弛操作。本资源通过实例演示了如何高效地更新路径长度,检测负权环,并最终确定从源点到图中所有其他顶点的最短路径。 这份资源特别适合对图算法有深入学习需求的学生、工程师以及算法爱好者,尤其是那些关注算法性能优化和实际应用的人士。通过学习这份资源,你不仅能掌握Bellman-Ford算法的核心逻辑,还将理解如何通过队列优化策略提升算法的执行效率,为解决复杂的网络最短路径问题提供有力工具。在算法学习和软件开发的道路上,这将是一块宝贵的垫脚石,助你攀登更高的算法高峰。

    Matlab实现RIME-CNN-SVM霜冰算法优化卷积支持向量机分类预测(完整源码和数据)

    Matlab实现RIME-CNN-SVM霜冰算法优化卷积支持向量机分类预测(完整源码和数据) 1.Matlab实现RIME-CNN-SVM霜冰算法优化卷积支持向量机分类预测(完整源码和数据) 2.优化参数为:学习率,批量处理大小,正则化参数。 3.图很多,包括迭代优化图、分类效果图,混淆矩阵图。 4.附赠案例数据可直接运行main一键出图~ 注意程序和数据放在一个文件夹,运行环境为Matlab2020及以上。 5.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 6.输入多个特征,分四类。

Global site tag (gtag.js) - Google Analytics