spring jdbctemplate插入blob,clob并且返回生成的序列主键

利用spring的jdbcTemplate处理blob、clob spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。 立即下载

首先dao类名字是WebContentDao,以下为配置的oracle序列

<bean id="increWC" class="org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer">
        <property name="incrementerName" value="s_webcontent"/> <!-- ①指定序列名 -->
        <property name="dataSource" ref="dataSource"/> 
<!-- ②设置数据源 -->
</bean>

以下为WebContentDao类的代码

@Autowired
 @Qualifier("jdbcTemplate")
 private JdbcTemplate jdbcTemplate;

 final Logger logger = LoggerFactory.getLogger(JdbcWebContentDao.class);

 @Autowired
 @Qualifier("increWC")
 private DataFieldMaxValueIncrementer increWC;

 @SuppressWarnings("unchecked")
 public int save(final WebContent wc){
     final StringReader sr = new StringReader(wc.getContent());
     final int length = wc.getContent().getBytes().length;
     jdbcTemplate.execute(
          "insert into webcontent(id,content,title) values (?,?,?)",
          new AbstractLobCreatingPreparedStatementCallback(new DefaultLobHandler()) {                        @Override
             int id = increWC.nextIntValue();
             wc.setId(id);      //由于要返回id,使用参数实体来保存id
             prep.setInt(1, id);
             lobCreator.setClobAsCharacterStream(prep, 2, sr,   length);
             prep.setString(3, wc.getTitle());
             //lobCreator.setBlobAsBinaryStream(ps, 3, blobIs, (int)blobIn.length());  

             }
          }); 
        sr.close();
        return wc.getId();

 }

由于Connection的ThreadLocal实现,两个属性JdbcTemplate和DataFieldMaxValueIncrementer都是取到同线程的Connection对象,所以不存在并发问题!


另外的一些做法

 /**   
     * 创建表  
     */   
    public void create(String tableName){ //tb_test1  
        jdbcTemplate.execute("create table "+tableName +" (id integer,user_name varchar2(40),password varchar2(40))");  
    }  

    //jdbcTemplate.update适合于insert 、update和delete操作;  
    /**   
     * 第一个参数为执行sql   
     * 第二个参数为参数数据   
     */   
    public void save3(User user) {  
        Assert.isNull(user, "user is not null");  
        jdbcTemplate.update("insert into tb_test1(name,password) values(?,?)",   
                new Object[]{user.getUsername(),user.getPassword()});  
    }  

    /**   
     * 第一个参数为执行sql   
     * 第二个参数为参数数据   
     * 第三个参数为参数类型   
     */   
    @Override  
    public void save(User user) {  
        Assert.isNull(user, "user is not null");  
        jdbcTemplate.update(  
                "insert into tb_test1(name,password) values(?,?)",   
                new Object[]{user.getUsername(),user.getPassword()},   
                new int[]{java.sql.Types.VARCHAR,java.sql.Types.VARCHAR}  
                );  
    }  

    //避免sql注入  
    public void save2(final User user) {  
        Assert.isNull(user, "user is not null");  

        jdbcTemplate.update("insert into tb_test1(name,password) values(?,?)",   
                new PreparedStatementSetter(){  

                    @Override  
                    public void setValues(PreparedStatement ps) throws SQLException {  
                        ps.setString(1, user.getUsername());  
                        ps.setString(2, user.getPassword());  
                    }  
        });  

    }  

    public void save4(User user) {  
        Assert.isNull(user, "user is not null");  
        jdbcTemplate.update("insert into tb_test1(name,password) values(?,?)",   
                             new Object[]{user.getUsername(),user.getPassword()});  
    }  

    //返回插入的主键  
    public List save5(final User user) {  

        KeyHolder keyHolder = new GeneratedKeyHolder();  

        jdbcTemplate.update(new PreparedStatementCreator() {  

                                @Override  
                                public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {  
                                    PreparedStatement ps = connection.prepareStatement("insert into tb_test1(name,password) values(?,?)", new String[] {"id"});  
                                    ps.setString(1, user.getUsername());  
                                    ps.setString(2, user.getPassword());  
                                    return ps;  
                                }  
                            },  
                keyHolder);  

        return keyHolder.getKeyList();  
    }  

    @Override  
    public void update(final User user) {  
        jdbcTemplate.update(  
                "update tb_test1 set name=?,password=? where id = ?",   
                new PreparedStatementSetter(){  
                    @Override  
                    public void setValues(PreparedStatement ps) throws SQLException {  
                        ps.setString(1, user.getUsername());  
                        ps.setString(2, user.getPassword());  
                        ps.setInt(3, user.getId());  
                    }  
                }  
        );  
    }  

    @Override  
    public void delete(User user) {  
        Assert.isNull(user, "user is not null");  
        jdbcTemplate.update(  
                "delete from tb_test1 where id = ?",   
                new Object[]{user.getId()},   
                new int[]{java.sql.Types.INTEGER});  
    }  

    @Deprecated //因为没有查询条件,所以用处不大  
    public int queryForInt1(){  
        return jdbcTemplate.queryForInt("select count(0) from tb_test1");  
    }  

    public int queryForInt2(User user){  
        return jdbcTemplate.queryForInt("select count(0) from tb_test1 where username = ?" ,  
                new Object[]{user.getUsername()});  
    }  

    //最全的参数3个  
    public int queryForInt3(User user){  
        return jdbcTemplate.queryForInt("select count(0) from tb_test1 where username = ?" ,  
                new Object[]{user.getUsername()},  
                new int[]{java.sql.Types.VARCHAR});  
    }  

    //可以返回是一个基本类型的值  
    @Deprecated  //因为没有查询条件,所以用处不大  
    public String queryForObject1(User user) {  
        return (String) jdbcTemplate.queryForObject("select username from tb_test1 where id = 100",  
                                                    String.class);  
    }  

    //可以返回值是一个对象  
    @Deprecated //因为没有查询条件,所以用处不大  
    public User queryForObject2(User user) {  
        return (User) jdbcTemplate.queryForObject("select * from tb_test1 where id = 100", User.class); //class是结果数据的java类型  
    }  

    @Deprecated //因为没有查询条件,所以用处不大  
    public User queryForObject3(User user) {  
        return (User) jdbcTemplate.queryForObject("select * from tb_test1 where id = 100",   
                    new RowMapper(){  

                        @Override  
                        public Object mapRow(ResultSet rs, int rowNum)throws SQLException {  
                            User user  = new User();  
                            user.setId(rs.getInt("id"));  
                            user.setUsername(rs.getString("username"));  
                            user.setPassword(rs.getString("password"));  
                            return user;  
                        }  
                    }  
        );   
    }  

    public User queryForObject4(User user) {  
        return (User) jdbcTemplate.queryForObject("select * from tb_test1 where id = ?",   
                                                    new Object[]{user.getId()},  
                                                    User.class); //class是结果数据的java类型  实际上这里是做反射,将查询的结果和User进行对应复制  
    }  

    public User queryForObject5(User user) {  
        return (User) jdbcTemplate.queryForObject(  
                "select * from tb_test1 where id = ?",   
                new Object[]{user.getId()},  
                new RowMapper(){  

                    @Override  
                    public Object mapRow(ResultSet rs,int rowNum)throws SQLException {  
                        User user  = new User();  
                        user.setId(rs.getInt("id"));  
                        user.setUsername(rs.getString("username"));  
                        user.setPassword(rs.getString("password"));  
                        return user;  
                    }  

        }); //class是结果数据的java类型  
    }  

    @Override  
    public User queryForObject(User user) {  
        //方法有返回值  
        return (User) jdbcTemplate.queryForObject("select * from tb_test1 where id = ?",  
                new Object[]{user.getId()},  
                new int[]{java.sql.Types.INTEGER},   
                new RowMapper() {  

                    @Override  
                    public Object mapRow(ResultSet rs, int rowNum) throws SQLException {  
                        User user  = new User();  
                        user.setId(rs.getInt("id"));  
                        user.setUsername(rs.getString("username"));  
                        user.setPassword(rs.getString("password"));  
                        return user;  
                    }  
                }  
        );  
    }  

    @SuppressWarnings("unchecked")  
    public List<User> queryForList1(User user) {  
        return (List<User>) jdbcTemplate.queryForList("select * from tb_test1 where username = ?",   
                            new Object[]{user.getUsername()},  
                            User.class);  
    }  

    @SuppressWarnings("unchecked")  
    public List<String> queryForList2(User user) {  
        return (List<String>) jdbcTemplate.queryForList("select username from tb_test1 where sex = ?",   
                            new Object[]{user.getSex()},  
                            String.class);  
    }  

    @SuppressWarnings("unchecked")  
    //最全的参数查询  
    public List<User> queryForList3(User user) {  
        return (List<User>) jdbcTemplate.queryForList("select * from tb_test1 where username = ?",  
                            new Object[]{user.getUsername()},  
                            new int[]{java.sql.Types.VARCHAR},  
                            User.class);  
    }  

    //通过RowCallbackHandler对Select语句得到的每行记录进行解析,并为其创建一个User数据对象。实现了手动的OR映射。  
    public User queryUserById4(String id){  
        final User user  = new User();  

        //该方法返回值为void  
        this.jdbcTemplate.query("select * from tb_test1 where id = ?",   
                new Object[] { id },   
                new RowCallbackHandler() {     

                    @Override    
                    public void processRow(ResultSet rs) throws SQLException {     
                        User user  = new User();  
            user.setId(rs.getInt("id"));  
            user.setUsername(rs.getString("username"));  
            user.setPassword(rs.getString("password"));    
                    }     
        });   

        return user;     
    }  

    @SuppressWarnings("unchecked")  
    @Override  
    public List<User> list(User user) {  
        return jdbcTemplate.query("select * from tb_test1 where username like '%?%'",   
                new Object[]{user.getUsername()},   
                new int[]{java.sql.Types.VARCHAR},   
                new RowMapper(){  

                    @Override  
                    public Object mapRow(ResultSet rs, int rowNum) throws SQLException {  
                        User user  = new User();  
                        user.setId(rs.getInt("id"));  
                        user.setUsername(rs.getString("username"));  
                        user.setPassword(rs.getString("password"));  
                        return user;  
                    }  
        });  
    }  

    //批量操作    适合于增、删、改操作  
    public int[] batchUpdate(final List users) {  

        int[] updateCounts = jdbcTemplate.batchUpdate(  
                "update tb_test1 set username = ?, password = ? where id = ?",  
                new BatchPreparedStatementSetter() {  

                        @Override  
                        public void setValues(PreparedStatement ps, int i) throws SQLException {  
                            ps.setString(1, ((User)users.get(i)).getUsername());  
                            ps.setString(2, ((User)users.get(i)).getPassword());  
                            ps.setLong(3, ((User)users.get(i)).getId());  
                        }  

                        @Override  
                        public int getBatchSize() {  
                            return users.size();  
                        }  
                }   
        );  

        return updateCounts;  
    }  

    //调用存储过程  
    public void callProcedure(int id){  
        this.jdbcTemplate.update("call SUPPORT.REFRESH_USERS_SUMMARY(?)", new Object[]{Long.valueOf(id)});  
}  
Flutter应用安卓逆向之hook分析研究---附dart版本对照表(必看篇) 搜索md5、rsa、aes等关键字分析要破解的加密算法,使用frida进行hook可疑函数的偏移地址。,双击进去找到ssl_crypto_x509_session_verify_cert_chain函数的偏移地址进行hook掉;Flutter应用是内置进行ssl证书校验的,无法通过常规方法抓到包,需要通过frida把它内置的ssl校验hook掉。重构完成后会生成新的apk,把它安装到模拟器或者真机中并打开运行,此时系统会在。关键字的函数进行hook(因为其返回的是字符串类型)中,拖进ide搜索字符串。 阅读详情

相关推荐

学术规范与论文写作(雨课堂)研究生 全部答案

1:如何造就优秀的学术论文 论文语法判断题 :全部是错的 2:如何撰写学术论文 3: SCI论文写作经验分享 4:论文写作与投稿技巧 5:学术伦理道德 答案仅供参考,研究生生活不易,大家如果有时间的话,还是可以学习学习的,毕竟老师讲的不错。加油,希望读研的每一个人都能顺利毕业! ...

Always-Learning 13万+

jdbctemplate的读写clob

所谓CLOB 可以看成是文本文,所谓BLOB可以看成是图片文件假设在mysql数据库上有以下表:create table test(id int primary key,txt TEXT,image BLOB);//写入 假设现在分别读取一个文字文件和二进制文件,并想将之存储到数据库中,则可以使用JdbcTemplate 如:final File binaryFile=new File(“wis

simplty的专栏 3818

Linux磁盘扩容实战:用parted命令无损扩展/data分区(附常见报错解决方案)

本文详细介绍了在Linux生产环境中使用parted命令对已挂载的/data分区进行在线磁盘扩容的完整实战流程。通过风险评估、状态检查、parted工具深度解析及实战演练,指导用户安全完成动态扩容,并提供了常见报错如'Partition is being used'、MBR 2TB限制等的解决方案,确保业务不中断、数据不丢失。

weixin_29207439的博客 297

JdbcTemplate插入clob类型字段(oracle数据库)

使用clob类型时,如果字符串长度太大,最后会出错,使用JdbcTemplate操作代码如下:final LobHandler lobHandler = new DefaultLobHandler (); //定义一个lob的操作类 Object update_result = jdbc.execute(sql, new AbstractLobCreatingPreparedStatem...

lh2420124680的博客 3673

基于JavaFX的Http Server模拟器

源码地址 GitHub - DayRain/http-server-simulator: http server 模拟器 功能描述 HttpServer模拟器,通过简单的配置即可模拟第三方服务端,用于接收和响应HTTP请求。 支持同时模拟多个服务、动态添加接口、动态配置返回值。 使用说明 运行 exe运行 编译代码后,点击exe直接运行 代码运行 下载好代码后,运行主类ApplicationStarter即可 新建服务 主界面如下 点击 文件-新建 创建新的服务 ...

小楼夜听雨的博客 2534

Scrapy实现微博关键词爬虫(爬虫结果写入mongodb)

话不多说,上代码: spiders文件夹下的microBlogSpider.py里这样写: # -*- coding: utf-8 -*- import scrapy from scrapy import Spider, Request, FormRequest from scrapy.selector import Selector import datetime import random from blogSpider.items import microBlogItem, keyWordItem f

qq_39360565的博客 1779

Jdbctemplate操作Clob字段

       最近开发需求中要求大数据的入库操作,LZ项目中使用的是Oracle数据库,因此选择了Clob类型存储。第一个想到的是普通的JDBC的操作,毕竟这个LZ以前处理过,但是这个程序统一使用的Spring的jdbctemplate进行的入库操作,LZ以前没接触过,就尝试研究了一番。 整体上代码难度不大,网上相关技术较多,这里简单贴下代码供参考: xml配置(也可以直接代码中new D...

风行天下 3170

一文读懂 SAP BTP Application Router 的 Resource Files:从 xs-app.json 到本地开发的默认设置

本文详解SAP BTP中Application Router的资源文件配置与本地开发实践。核心包括:xs-app.json定义路由规则与安全策略,package.json声明依赖与启动脚本,resources/存放静态资源,default-services.json和local-destinations.json用于本地模拟云服务。文章通过真实案例展示如何配置静态资源直出、反向代理后端服务,并强调本地开发时的注意事项与常见问题解决路径。关键配置均提供示例代码,帮助开发者快速实现业务应用的部署与联调。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 177

spring jdbcTemplate操作 CLOB

public boolean insertOrderLog(OrderLogPojo orderLogPojo) {   String logIdSql = "SELECT ''||sys_guid() AS LOG_ID FROM DUAL";   String logId = "";   List logIdList = jdbcTemplate.queryForList(logIdSq

zhangliao613的专栏 4418

基金估值核算系统三国杀:恒生 VS 赢时胜 VS 融选!

本文对比分析了恒生电子、赢时胜和融选科技三家金融科技公司的基金估值系统。恒生电子作为行业龙头,在公募基金领域占据较大份额,其新一代估值系统6.0采用微服务架构,自动化程度高;赢时胜在中型公募和券商资管领域优势明显,其V5.5系统在信创适配和复杂产品处理方面表现突出;融选科技作为新兴厂商,提供轻量化解决方案,适合中小型机构。文章从市场格局、系统定位、技术架构、成本构成和用户反馈五个维度进行深入比较,为金融机构选型提供参考。当前估值系统市场呈现"三国鼎立"格局,各具特色,选型需结合机构规模、

magbox520的博客 826

开源Harness项目DeerFlow 2.0,让智能体几乎能完成任何复杂任务

从提示工程到上下文工程,再到如今的 Harness,这条演进路径的本质是从“教模型如何理解人类”迈向“为模型构建一个可执行、可信赖、可长期运转的数字世界”。 当越来越多像 DeerFlow 2.0 这样的 Super Agent Harness 走向普及,AI 将真正进化为能理解、会规划、可执行、敢交付、长期负责的成熟生产力形态。

技术引领业务创新 519

jdbctemplate mysql blob_spring jdbctemplate插入blob,clob并且返回生成的序列主键

困扰了我一天,贴出来请大家拍砖解惑!首先dao类名字是WebContentDao,以下为配置的oracle序列以下为WebContentDao类的代码@Autowired@Qualifier("jdbcTemplate")private JdbcTemplate jdbcTemplate;final Logger logger = LoggerFactory.getLogger(JdbcWebCo...

weixin_39617702的博客 235

2026最新版OpenClaw安装:Windows WSL2从零到跑通

Windows WSL2安装OpenClaw指南 本文详细介绍了在Windows系统上通过WSL2部署OpenClaw AI助理的完整流程。WSL2结合了Windows易用性和Linux高性能,特别适合Windows用户、开发者、学生和技术爱好者。文章涵盖硬件要求(推荐i5/16GB/SSD)、系统准备(Windows 10/11+WSL2)、环境部署(Python/Node.js/Redis)和OpenClaw配置(克隆/编译/初始化)等关键步骤。通过WSL2,用户可在保留Windows操作习惯的同

一键难忘的博客 2345

jdbcTemplate读取BLOB大字段

在开发中遇到读取BLOB大字段问题,在这里总结下。 BLOB全称为二进制大型对象(Binary Large Object)。它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节。 CLOB全称为字符大型对象(Character Large Object)。它与LONG数据类型类似,只不过CLOB用于存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集。可存储的...

change的博客 4426

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

使用Spring的JdbcTemplate处理Clob

1. 数据库表 req_seq   CREATE TABLE req_seq ( req_id VARCHAR2(36) PRIMARY KEY, seq VARCHAR2(100), req_xml CLOB, req_time DATE );   2. 实体类   import java.io.Serializable; import java.sql.Times...

二楼后座 837

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JAVA封装clob,SpringJdbcTemplate操作Clob和Blob的通用类封装

项目中使用SpringJdbcTemplate来操作数据库,简单方便实用(根据项目需求选择技术),目前用到Oracle10g数据库,由于其操作大文本使用Clob类型,故而研究了下jdbctemplate对clob和Blob的操作。jdbctemplate对clob和blob的操作使用起来也很简单,网友提供很多实例和代码。例如:主要是利用jdbctemplate提供的两个类来操作:LobCreato...

weixin_35045900的博客 695

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JDBC如何插入Blob类型字段

Blob类型字段 Blob:在MySQL中 Blob是一个二进制大型对象,可以是存储大量数据的容器,他能容纳不同大小的数据,插入Blob类型的数据必须使用PrepareStatement 因为Blob类型的数据无法使用字符串拼接。 四种Blob类型: 注意:再插入时出现插入的数据太大,则需要去my.ini文件中修改配置文件: max_allowed_packet=16M。直接在会后面添加,然后重启mysql服务。 向数据表中插入大数据类型的图片 ...

weixin_48479053的博客 1386

JDBC向数据库中插入BLOB类型数据

简单介绍如何使用jdbc来对数据库进行二进制文件的存储和读取。以及对于数据过大无法插入的错误解决方法。

m0_71987537的博客 1831

PostgreSQL使用MyBatis,insert时如何返回主键

平时写MyBatis中的insert语句是这样的: <insert id="insert" parameterType="com.userDao"> insert into user (id, name) values (#{id,jdbcType=INTEFER}, #{name,jdbcType=VARCHAR}) </insert> 此时Dao接口的public Integer insert(User user);返回的Integer是收到改动的行数,插

sunayn的博客 2348

关于Jorm的主键ID生成

关于Jorm的主键ID生成 > 引言   在Jorm中,主键的生成策略主要有AUTO、UUID、GUID、FOREIGN、SEQUENCE、INCREMENT、IDENTITY、ASSIGNED,下面分别来讲述这几种策略的应用场景 > GenerationType.AUTO   Jorm的默认主键策略,自动增长型,自增步长为1,适用数据类型int,long,如:   private in

chy800的专栏 1321

jdbc 3种获得mysql插入数据的自增字段值的方法_【JDBC】向数据表插入数据时,自动获取生成的主键...

数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键;有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid);当我们没有指定哪一列作为主键key时,数据表可能会含有一个隐含的主键(或者叫唯一键值);当我们向数据表中插入数据时,对于每一条记录,都会有一个主键与之对应,那么我们如何在向数据表中插入数据时,获取到数据库自动分配的主键呢?如下给出示例:上面使用...

weixin_39789042的博客 626

mysql 的秘钥,使用主键和唯一键重复密钥更新的Mysql

我有一个表,其中包含一个自动递增的主键和一个唯一键:CREATE TABLE `product` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`canonical_url` varchar(750) CHARACTER SET latin1 NOT NULL,...PRIMARY KEY (`id`),UNIQUE KEY `canonical_url_idx...

weixin_33520805的博客 737

jdbc 读取mysql blob_jdbcTemplate获取mysql的blob

java使用jdbcTemplate操作mysql数据库,遇到blob字段,正常读取出来是blob的地址,而不是blob的内容。下面采用2中方式读取blob的内容:1、以二进制数组形式读取blob,适用于文本数据public void testJdbc(){ApplicationContext ctx = new ClassPathXmlApplicationContext("restlet-se...

weixin_39761558的博客 327

jdbcTemplate存取blob(图片)

public class ImageDao extends JdbcDaoSupport { private JdbcTemplate jdbcTemplate; public void addImage(final String pictureName, String fileUrl) {//图片保存到数据库     final FileInputStream fis;         

zdy19900811的专栏 4050

JDBC操作BLOB类型字段

下面详解下PrepareStatement单独存取数据库Blob字段。这里演示通过PreparedStatement操作数据库BLOB字段。JDBC中Statement接口本身不能直接操作BLOB数据类型。设置最大传入字节 一般是4M 可以通过以下命令修改。这里封装的方法本身就可以对Blob字段进行。像下面这样也行 这样就保存文件了。用工具类中封装的方法 存。操作BLOB数据类型需要使用。

tiantiantbtb的博客 712

jdbctemplate mysql blob_JdbcTemplate 操作Oracle Blob

写此文章,是因为我之前也并没有接触过,上网找了许多资料,还是有七七八八的问题,最终解决了,做个记录,免得之后忘记。首先,先取出Blob字段,将其保存在字节数组中,之后用HTTP协议中下载文件的格式对应,主要只要写两个:(1)response.setContentType("audio/wav");(2)response.setHeader("Content-disposition","attach...

weixin_39789101的博客 297
上一篇: jdbctemplate的读写clob
下一篇: jquery点击滑动到某个位置
AiHubMax
博客等级 码龄15年 27粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值