首页 > 其他分享 >springjdbc处理nvarchar

springjdbc处理nvarchar

时间:2023-08-14 17:46:35浏览次数:36  
标签:处理 public NvarcharTypeHandler BeanPropertySqlParameterSource import springjdbc n

当我们使用spring-jdbc来做持久化时(注意不是spring-data-jbc),有时候一些特殊字符存入数据库时会用到nvarchar、nvarchar2这种类型(比如存放化学式,如CO₂等),默认会直接按照String类型来处理字段类型映射,如果要最终让使用ps.setNString这种,一般有几种办法。

  1. 当使用JdbcTemplate时,可以自己在参数列表中设置数据类型为-9(即java.sql.Types.NVARCHAR)即可
  2. 当使用NamedParameterJdbcTemplate时,入参可以使用SqlParameterValue来设置,同时设置类型为-9
  3. 当使用NamedParameterJdbcTemplate,入参是Bean时,可以创建一个类,继承
    BeanPropertySqlParameterSource、然后定义一个注解,在需要nvarchar处理的字段上加上改注解。然后就可以直接使用,比如
    namedParameterJdbcTemplate.update(sql, new CustomerBeanPropertySqlParameterSource(...))
  4. import org.apache.commons.lang3.reflect.FieldUtils;
    import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
    
    import java.sql.Types;
    
    public class CustomerBeanPropertySqlParameterSource extends BeanPropertySqlParameterSource {
    
        public CustomerBeanPropertySqlParameterSource(Object object) {
            super(object);
            FieldUtils.getFieldsListWithAnnotation(object.getClass(), NvarcharTypeHandler.class)
                    .forEach(field -> registerSqlType(field.getName(), Types.NVARCHAR));
        }
    }
    
    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.FIELD)
    public @interface NvarcharTypeHandler {
    }
    
    public class Demo{
       @NvarcharTypeHandler
       private String cont;  
    }
    

      

标签:处理,public,NvarcharTypeHandler,BeanPropertySqlParameterSource,import,springjdbc,n
From: https://www.cnblogs.com/Nuwa/p/17629301.html

相关文章

  • library initialization failed - unable to allocate file descriptor table - out o
    1、修改docker服务启动配置文件#vim/usr/lib/systemd/system/docker.service...[Service]...ExecStart=/usr/bin/dockerd-Hfd://--containerd=/run/containerd/containerd.sock--default-ulimitnofile=65536:65536#第13行...2、重新加载配置systemctldae......
  • 锐龙r5 6600h和酷睿i5 12500h处理器哪个好 r56600h和i512500h差多少
    i5-12500H:12个核心16个线程(4大核8个小核,大核干重活,小核“敲边鼓”),10nm工艺,18MB三级缓存,最高睿频4.5GHZ,80EU核显;选i512500H还是r56600h这些点很重要看过你就懂了http://www.adiannao.cn/dyR5-6600H配置参数:6nm的工艺,6核12线程,3.3GHz的主频,4.5GHz的睿频,三级缓存16MB,功耗TDP为45W......
  • mysql账号密码失效后无法修改密码问题处理过程
    --修改密码alterusermeet@'%'identifiedwithmysql_native_passwordby'123456';--修改账户有效期alteruser'meet'@'%'passwordexpireinterval600day;报错处理:ERROR1396(HY000):OperationALTERUSERfailedfor'meet�......
  • ACM模式输入输出处理
    cin遇到\n会停止读取但是不会读出来1.数组长度确定,多组数据直接一个while循环输入151020输出630while(cin>>a>>b){cout<<a+b<<endl;}第一个数表示组数的,直接给个size,然后for循环输入2151020输出6302.数组长度不确定','分......
  • .net 框架引用asp.net core某些包提示已弃用,此包是旧版本且不再受到维护,因此已被弃用
     我们看到一些特定功能的包只更新到了2.2.2版本比如最常用的Microsoft.AspNetCore.Http这个类库,提示已弃用,我以为是换其他包了最后我们在微软官网文档里找到了答案:随着.NETCore3.0发布,许多ASP.NETCore程序集不再作为包发布到NuGet。而是改为将这些程序集包含在通过......
  • volatility3处理虚拟机内存快照报错
    准备工作python3.7以上https://github.com/volatilityfoundation/volatility3#安装pipinstallvolatility3#使用vol.exe-vvv-ftest-Snapshot1.vmemhashdump-vvv显示详细的报错信息-f指定内存镜像hashdump获取账号密码hash生成Linux下的standalone文件在Li......
  • 数字图像处理基本知识
     数字图像处理基本知识作者:小白学视觉 1、数字图像:数字图像,又称为数码图像或数位图像,是二维图像用有限数字数值像素的表示。数字图像是由模拟图像数字化得到的、以像素为基本元素的、可以用数字计算机或数字电路存储和处理的图像。2、数字图像处理包括内容......
  • 【pandas小技巧】--日期相关处理
    日期处理相关内容之前pandas基础系列中有一篇专门介绍过,本篇补充两个常用的技巧。1.多列合并为日期当收集来的数据中,年月日等信息分散在多个列时,往往需要先合并成日期类型,然后才能做分析处理。合并多列转换为日期类型,可以直接用to_datetime函数来处理:importpandasaspddf......
  • 基于C#的消息处理的应用程序 - 开源研究系列文章
          今天讲讲基于C#里的基于消息处理的应用程序的一个例子。我们知道,Windows操作系统的程序是基于消息处理的。也就是说,程序接收到消息代码定义,然后根据消息代码定义去处理对应的操作。前面有一个博文例子(C#程序的启动显示方案(无窗口进程发送消息)-开源研究系列文......
  • 学习go语言编程之错误处理
    error接口Golang中有一个关于错误处理的标准模式,即:error接口。typeerrorinterface{ Error()string}对于大多数函数,如果要返回错误,大致上都可以定义为如下模式:funcFoo(paramint)(nint,errerror){ //...}将error作为多种返回值中的一个,但是这并非强制要求。......