mybatis bigdecimal 对应啥类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis bigdecimal 对应啥类型相关的知识,希望对你有一定的参考价值。

SQL数据类型和Java数据类型的对应关系
integer、int ---> int
tinyint、smallint ---> short
bigint ---> long
decimal、numeric ---> java.math.BigDecimal
float ---> float
double ---> double
char、varchar ---> String
boolean、bit ---> boolean
date ---> java.sql.Date
time ---> java.sql.Time
timestamp ---> java.sql.Timestamp
blob ---> java.sql.Blob
clob ---> java.sql.Clob
array ---> java.sql.Array
参考技术A 在实际项目开发过程中,数据库dao层的增删改查操作,都要接收到前端页面传递过来的参数,然后再进行操作,那么在使用Mybatis数据库框架进行开发时,底层dao的参数传递怎么处理呢?
Mybatis传递参数有以下五种方式可以实现,下面以员工操作为例,看看具体的操作方式。
第一种方式使用顺序传递参数
EmployeeMapper.java文件:

EmployeeMapper.xml文件:

注意:xml里面的param1,param2的数字代表方法传入参数的顺序,必须严格按照参数顺序来引用,缺点呢不够灵活,而且特别参数个数多的时候也不是很方便。
第二种方式使用Mybatis自带的注解@Param传递参数
这种方式来传递参数,可以在xml文件中按照参数名称去引用。
EmployeeMapper.java文件:

EmployeeMapper.xml文件:

注意:在mapper.xml文件中sql语句参数变量名称要和@Param注解中定义的参数名称一样。

第三种方式使用Map集合传递参数
实际开发中当前端页面传递多个参数时,使用Map集合操作是一种推荐的方式。
EmployeeMapper.java文件:

EmployeeMapper.xml文件:

在上面的例子中可以看到使用map集合来传递多个参数进行查询,可以直接在sql语句中使用参数名称进行引用。
第四种方式使用JavaBean实体类传递参数
使用JavaBean实体类的方式来传递多个参数,使用时parameterType参数类型指定为对应的JavaBean实体类类型,sql语句中使用参数名称进行引用。
EmployeeMapper.java文件:

EmployeeMapper.xml文件:

第五种方式传递集合类型参数List集合
在一些复杂的操作中,比如下面的批量添加操作,传统的参数传递已无法满足需求,这时候就要用到List集合类型的参数传递,具体使用如下:
EmployeeMapper.java文件:

EmployeeMapper.xml文件:
参考技术B mybatis中 jdbcType 时间类型
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
1
1
当 jdbcType = TIMESTAMP , 年月日+ 时分秒 例: 2019-02-28 09:56:11

<result column="create_time" property="createTime" jdbcType="DATE"/>
1
1
当jdbcType=”DATE” 都忽略了 时分秒, 无论是否有时分秒,都设置为了 00:00:00。例: 2019-02-28 00:00:00

2.JdbcType类型和Java类型的对应关系

1 JDBC Type Java Type
2 CHAR String
3 VARCHAR String
4 LONGVARCHAR String
5 NUMERIC java.math.BigDecimal
6 DECIMAL java.math.BigDecimal
7 BIT boolean
8 BOOLEAN boolean
9 TINYINT byte
10 SMALLINT short
11 INTEGER INTEGER
12 BIGINT long
13 REAL float
14 FLOAT double
15 DOUBLE double
16 BINARY byte[]
17 VARBINARY byte[]
18 LONGVARBINARY byte[]
19 DATE java.sql.Date
20 TIME java.sql.Time
21 TIMESTAMP java.sql.Timestamp
22 CLOB Clob
23 BLOB Blob
24 ARRAY Array
25 DISTINCT mapping of underlying type
26 STRUCT Struct
27 REF Ref
28 DATALINK java.net.URL[color=red][/color]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
3.在Mybatis也明文建议在映射字段数据时需要将JdbcType属性加上,当传入字段值为null时. 会报错。
参考技术C resultType="java.math.BigDecimal"

mybatis的DECIMAL类型映射到实体相对应的BigDecimal类型是啥?

比如:数据库里有个数据为10.00,映射到实体就变成了10,但是要是10.21,映射就会为10.21,不知道mybatis为啥会自动进行取整操作;其实如果换成double或者float就不会取整了,但是如果实体对象某一double类型字段数据如果是如10.00这样的,在进行fastjson时又会被取整为10,而如果为BigDecimal类型,则不会被取整,这个掣肘好痛苦,求大神解惑?

参考技术A

SQL数据类型。

数据类是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同。

日期和时间数据类型日期和时间数据类型包括 Datetime 和 Smalldatetime 两种类型。 日期和时间数据类型由有效的日期和时间组成。

以上是关于mybatis bigdecimal 对应啥类型的主要内容,如果未能解决你的问题,请参考以下文章

java:BigDecimal还是Integer有啥区别??Oracel保存的数值类型对应java,java中用啥类型好?

mybatis的jdbcType和javaTypeoracle,MySQL的对应类型

decimal对应java啥类型

decimal对应java啥类型

numeric对应java啥类型

longtext对应mybatis啥类型