源码如下:
因为前端页面并不是所有的项均为必填项, 故insert 新增sql语句需动态拼接, 刚开始通过tomcat后台发现报如下错误:
经过查阅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 |
将数据库数据类型为int类型的check_type字段,修改jdbcType对应类型为INTEGER, 将数据库类型为text类型的字段parse_script, 对应jdbcType修改为LONGVARCHAR, 如上图所示, 修改后之后的完整代码如下:
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所拥有的数据类型是存在以上一一对应关系的, 感觉有必要记录这一点, 故写下这篇文章, 希望也能让大家长个记性, 好了, 今天的文章就先写到这, 我们下期再见, 希望能帮到有需要的人 ; 感谢大家的支持!