Mybatis的认识及传参

来源:互联网 发布:大数据需要什么设备 编辑:程序博客网 时间:2024/06/05 18:15

先来看下Mybatis的百度解释:

Mybatis是一个支持普通SQL查询、存储过程和高级映射的优秀持久层框架。Mybatis消除了几乎所有的JDBC的代码和参数的手工设置以及对结果集的检索封装。Mybatis可以使用简单的XML或注解用于配置和原始映射,将接口和JavaPOJOPlain Old Java Objects,普通的Java对象)映射成数据库中的记录。

Mybatis的核心配置文件是Configuration.xml,下面上个Mybatis的结构图:


说实话,这图我也不太懂,百度有它的解释,粘贴如下:

框架架构讲解:

(1)加载配置:配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。

(2)SQL解析:当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。

(3)SQL执行:将最终得到的SQL和参数拿到数据库进行执行,得到操作数据库的结果。

(4)结果映射:将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回。

接下来说下Mybaits的几种传参方法:

如果只有一个基本类型的参数,直接传递就好,例:#{nodeId}。如果有2个或2个以上,传参有三种方式。

1.用#{0}代表第一个参数#{1}代表第二个参数,以此类推,但这些参数必须是同一类型,例如都是String或都是int

2.用HashMap传参,将参数都放置到HashMap中进行传递,不同类型的参数也行。

3.用bean对象传参,将参数加到new后的对象中,传参时传递对象即可。

Mybatis返回多个参数要写resultMap

oracle数据库Mybatis返回插入的主键方法:

    <selectKey resultType="int" order="BEFORE" keyProperty="Id">

     SELECT SEQ_STUDENT.NEXTVAL AS ID FROM DUAL

    </selectKey>

插入参数时要带参数类型,例:#{Id,jdbcType=BIGINT}。

Mybatis插入空值时,需要指定jdbcTypejdbcType有以下几种类型:

BIT  FLOAT  CHAR  TIMESTAMP  OTHER  UNDEFINED  TINYINT  REAL  VARCHAR  BINARY  BLOB  NVARCHAR  SMALLINT  DOUBLE  LONGVARCHAR

VARBINARY  CLOB  NCHAR  INTEGER  NUMERIC  DATE  LONGVARBINARY

BOOLEAN  NCLOB  BIGINT  DECIMAL  TIME  NULL  CURSOR



0 0
原创粉丝点击