当前位置:首页 > 芯闻号 > 充电吧
[导读]                        我所写的项目是使用Maven开发,在pom.xml中添加如下必要依赖:         添加com.microsoft.sqlserver的mssql-

               

        我所写的项目是使用Maven开发,在pom.xml中添加如下必要依赖:
        添加com.microsoft.sqlserver的mssql-jdbc 6.2.1.jre8的依赖

  
    com.microsoft.sqlserver  
    mssql-jdbc  
    6.2.1.jre8  
 

        

        在下面的Java代码块中,涉及到如何在Java中创建SQL Server的“表值变量”(临时表),以及Java代码如何去调用SQL Server的存储过程,如何传递在Java代码中所写的“表值变量”(临时表)。其中,代码中所调用的 proc_test01存储过程,可参考我写的博客:SQL Server数据库学习之 -- 存储过程-游标-表值类型综合运用

       

       我所写的代码有些简化,以“学生 -- 班级 -- 教师”这种经典模式来讲解自己所运用的知识点。可能网友直接将我的代码粘贴-复制,运行会报错。不过其中的知识点确是无误的!


        在本篇文章中,最重要的是其运用到SQL Server表值类型变量这块知识。关于在Java代码中引入的Sql Server-Jar包,不能太低,否则无法使用“表值类型变量”这块知识。 

import java.util.Map;

import com.microsoft.sqlserver.jdbc.SQLServerCallableStatement;
import com.microsoft.sqlserver.jdbc.SQLServerDataTable;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.CallableStatementCallback;
import org.springframework.jdbc.core.CallableStatementCreator;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

@Service
public class ClazzService {
        /**
	 * 批量提交班级信息
	 */
	public int putClazz(Clazz clazz) throws SQLException {
		Integer count = 0;  
		
		Integer testCount = sqlServerJdbcTemplate.execute(
				new CallableStatementCreator() {
					@Override
					public CallableStatement createCallableStatement(Connection con) throws SQLException {
						SQLServerCallableStatement cs = (SQLServerCallableStatement) con.prepareCall("exec proc_test01 ?, ?");
						// 设置存储过程中所用的临时表名
						SQLServerDataTable sourceDataTable = new SQLServerDataTable();
						
						// 为临时表sourceDataTable添加表头字段和字段类型
						sourceDataTable.addColumnMetadata("TEACHER", java.sql.Types.VARCHAR);
						sourceDataTable.addColumnMetadata("CLANO", java.sql.Types.VARCHAR);
						sourceDataTable.addColumnMetadata("SEX", java.sql.Types.CHAR);
						sourceDataTable.addColumnMetadata("NAME", java.sql.Types.VARCHAR);
						sourceDataTable.addColumnMetadata("AGE", java.sql.Types.INTEGER);
						sourceDataTable.addColumnMetadata("STUNO", java.sql.Types.INTEGER);
						
						
						// 可一次性将多个不同学生插入到同一个班级中
						for (Student student : clazz.getStudent()) {
							// 将数据添加进创建的Table表中
							sourceDataTable.addRow(clazz.getTeacher(), clazz.getClaNo(), 
													student.getSex(), student.getName(),
													student.getAge(), student.getStuNo());
						}
						
						// 字符串"clazz_Table"为调用数据库存储过程“proc_test01”中,其内部编写的临时表名称
						cs.setStructured(1, "clazz_Table", sourceDataTable);
						cs.registerOutParameter(2, java.sql.Types.INTEGER);   // 可返回值的参数
						
						return cs;
					}
				}, 
				new CallableStatementCallback() {
					@Override
					public Integer doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
						cs.execute();
						return cs.getInt(2);   // 将第“2”个参数的值返回。第“2”个参数,其类型是“返回值类型参数”
					}
				}
			);
		
		count = testCount;   // 将testCount变量赋值给count变量
		return count;
		
	}  // public int putClazz(Clazz clazz)
    
}


Student.java类(学生类),其代码如下

package com.entity;

public class Student {
	
	private char sex;  // 性别
	
	private String name;  // 姓名
	
	private int age;      // 年龄
	
	private int stuNo;    // 学号  
	
	
	public char getSex() {
		return sex;
	}

	public void setSex(char sex) {
		this.sex = sex;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getStuNo() {
		return stuNo;
	}

	public void setStuNo(int stuNo) {
		this.stuNo = stuNo;
	}
	
	
}



Clazz.java类(班级类)

package com.entity;

import java.util.List;

public class Clazz {
	
	private String teacher;   // 班主任
	
	private String claNo;     // 班级编号
	
	private List stuList;  //学生

	public String getTeacher() {
		return teacher;
	}

	public void setTeacher(String teacher) {
		this.teacher = teacher;
	}

	public String getClaNo() {
		return claNo;
	}

	public void setClaNo(String claNo) {
		this.claNo = claNo;
	}

	public List getStuList() {
		return stuList;
	}

	public void setStuList(List stuList) {
		this.stuList = stuList;
	}
	
	
	
}


--------------------------------------------------------------------------

--------------------------------------------------------------------------

例如,写一接口,调用putClazz()函数,则可传递一组JSON数据,其数据格式如下所示。通过调用putClazz()函数,可以做到在一次提交数据过程中:一个班级可以插入多个学生信息。

JSON格式代码:

{
    "teacher": "吴老师",
    "clano": "打杂1班",
    "stuList": [
        {
            "sex": "男",
            "name": "吃瓜群众",
            "age": 18,
            "stuNo": 101001
        },
        {
            "sex": "女",
            "name": "如花",
            "age": 16,
            "stuNo": 101002
        },
        {
            "sex": "女",
            "name": "龅牙珍",
            "age": 20,
            "stuNo": 101001
        }
    ]
}






本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭