记录一次mybatis动态新增拼接sql语句出现的异常(主要是数据库SQL Server与jdbcType数据类型之间的对应关系)

源码如下:

记录一次mybatis动态新增拼接sql语句出现的异常(主要是数据库SQL Server与jdbcType数据类型之间的对应关系)_第1张图片

记录一次mybatis动态新增拼接sql语句出现的异常(主要是数据库SQL Server与jdbcType数据类型之间的对应关系)_第2张图片

记录一次mybatis动态新增拼接sql语句出现的异常(主要是数据库SQL Server与jdbcType数据类型之间的对应关系)_第3张图片

记录一次mybatis动态新增拼接sql语句出现的异常(主要是数据库SQL Server与jdbcType数据类型之间的对应关系)_第4张图片

因为前端页面并不是所有的项均为必填项, 故insert 新增sql语句需动态拼接, 刚开始通过tomcat后台发现报如下错误:
记录一次mybatis动态新增拼接sql语句出现的异常(主要是数据库SQL Server与jdbcType数据类型之间的对应关系)_第5张图片

 

经过查阅mybaits官网才知道以下事实: 1、mybatis insert语句中 jdbcType  后面跟的类型字母必须全部都大写; 2、JdbcType所拥有的数据类型和Java类型以及SQL Server语言所拥有的数据类型存在以下对应关系

      下表列出了基本 SQL Server、JDBC 和 Java 编程语言数据类型之间的默认映射:

SQL Server 类型 JDBC 类型 (java.sql.Types) Java 语言类型

bigint

BIGINT

long

timestamp

binary

BINARY

byte[]

bit

BIT

boolean

char

CHAR

String

decimal

money

smallmoney

DECIMAL

java.math.BigDecimal

float

DOUBLE

double

int

INTEGER

int

image

varbinary(max)

LONGVARBINARY

byte[]

varchar(max)

text

LONGVARCHAR

String

nchar

CHAR

NCHAR (Java SE 6.0)

String

nvarchar

VARCHAR

NVARCHAR (Java SE 6.0)

String

nvarchar(max)

ntext

LONGVARCHAR

LONGNVARCHAR (Java SE 6.0)

String

numeric

NUMERIC

java.math.BigDecimal

real

REAL

float

smallint

SMALLINT

short

datetime

smalldatetime

TIMESTAMP

java.sql.Timestamp

varbinary

udt

VARBINARY

byte[]

varchar

VARCHAR

String

tinyint

TINYINT

short

uniqueidentifier

CHAR

String

xml

LONGVARCHAR

SQLXML (Java SE 6.0)

String

SQLXML

time

TIME (1)

java.sql.Time (1)

date

DATE

java.sql.Date

datetime2

TIMESTAMP

java.sql.Timestamp

datetimeoffset (2)

microsoft.sql.Types.DATETIMEOFFSET

microsoft.sql.DateTimeOffset

后将   记录一次mybatis动态新增拼接sql语句出现的异常(主要是数据库SQL Server与jdbcType数据类型之间的对应关系)_第6张图片

将数据库数据类型为int类型的check_type字段,修改jdbcType对应类型为INTEGER, 将数据库类型为text类型的字段parse_script, 对应jdbcType修改为LONGVARCHAR, 如上图所示, 修改后之后的完整代码如下:


        INTEGER">
            select last_insert_id()
        

        
        insert into check_item
        
          
            name,
          

          
            alias,
          

          
            check_type,
          

          
            check_code,
          

          
            sys_code,
          

          
            weight,
          

          
            check_content,
          

          
            judge_by,
          

          
            reinforce,
          

          
              is_auto,
          

          
              parse_type,
          

          
              parse_script,
          

          
              baseline_val,
          

          
              script_id,
          

          
              is_buildin,
          

          
              is_alert,
          

        

        
          
            #{name,jdbcType=VARCHAR},
          

          
            #{alias,jdbcType=VARCHAR},
          

          
            #{check_type,jdbcType=INTEGER},
          

          
            #{check_code,jdbcType=VARCHAR},
          

          
            #{sys_code,jdbcType=VARCHAR},
          

          
            #{weight,jdbcType=INTEGER},
          

          
            #{check_content,jdbcType=LONGVARCHAR},
          

          
            #{judge_by,jdbcType=LONGVARCHAR},
          

          
            #{reinforce,jdbcType=LONGVARCHAR},
          

          
          
            #{is_auto,jdbcType=INTEGER},
          

          
            #{parse_type,jdbcType=INTEGER},
          

          
            #{parse_script,jdbcType=LONGVARCHAR},
          

          
            #{baseline_val,jdbcType=LONGVARCHAR},
          

          
            #{script_id,jdbcType=INTEGER},
          

          
            #{is_buildin,jdbcType=INTEGER},
          

          
            #{is_alert,jdbcType=INTEGER},
          

        

    

最后数据成功插入到数据库中, 以后可得长记性了, 还是上面提到的两点 jdbcType后面跟的数据类型的字母必须全部大写, 然后jdbcType所拥有的数据类型和 SQL Server以及java所拥有的数据类型是存在以上一一对应关系的, 感觉有必要记录这一点, 故写下这篇文章, 希望也能让大家长个记性, 好了, 今天的文章就先写到这, 我们下期再见, 希望能帮到有需要的人 ; 感谢大家的支持!

你可能感兴趣的:(mybaits,sql语句)